날짜로 걸러내기 0 5 1,728

by sql_master [2010.06.10 18:38:27]


tableA
---------------
  date   name
 201003  aaaa
 201003  bbbb
 201003  cccc
 201003  dddd
 201004  aaaa
 201004  bbbb
 201004  cccc
 201004  dddd
 201005  aaaa
 201005  bbbb
 201005  cccc
 201005  dddd

이렇게 데이터가 있는데.

여기서 4월달일경우 cccc가 안나오게 하는 방법이 있나요 ?
고수님들 답변부탁드립니다.

by 마농 [2010.06.10 22:34:52]
SELECT *
FROM 테이블
WHERE date <> '201004'
OR name <> 'cccc'
;

by sql_master [2010.06.11 08:31:30]
마농님 감사드립니다.
그런데 한가지 제가 빠뜨린게 있네요.. 201004가 아니라 매달 04일이네요.
그래서 제가 한게 WHERE SUBSTR(DATE,5,6) ='04' 이렇게 했는데.. 그럼 퍼포먼스에 영향이 가지않나요? 조건에 앞쪽을 가공해서... 아닌가요?

by 현 [2010.06.11 08:33:17]
조건을 가공해서 성능이 떨어진다는 애기는 인덱스 스캔시에 해당됩니다.
어차피 not로 조건을 비교할 때는 인덱스 스캔을 하지 못하므로,
가공하셔도 됩니다...

by 마농 [2010.06.11 08:42:02]
WHERE NOT(SUBSTR(date, 7, 2) = '04' AND name = 'cccc')
WHERE SUBSTR(date, 7, 2) != '04' OR name != 'cccc'

by sql_master [2010.06.11 08:55:33]
현님.. 마농님 모두 감사드립니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입