쿼리 조건을 구성하다보면 멀티키와 같은 컬럼 중 일부를 제외하고 싶을 때가 있습니다.
1건이 아니라 여러건을 조회할 때
그렇다면 명확하게 1-a, 2-b, 3-c만 매칭하려면..
id가 1이고 bar가 'a'인 경우, id가 2이고 bar가 'b'...
NOT IN 조건도 동일하게 작동합니다.
참고
- http://stackoverflow.com/questions/4622453/where-col1-col2-in-sql-subquery-using-composite-primary-key
1건이 아니라 여러건을 조회할 때
기대치 : 1-a, 2-b, 3-c만 원할 때
SELECT * FROM foo WHERE id IN (1, 2, 3) AND bar IN ('a', 'b', 'c')로 구성하면 1-a, 1-b, 1-c.. 3-b, 3-c가 조회됩니다. 교차로 적용되기 때문입니다.
그렇다면 명확하게 1-a, 2-b, 3-c만 매칭하려면..
정확히 매칭
SELECT * FROM foo WHERE (id, bar) IN ((1, 'a'), (2, 'b'), (3, 'c'))이 경우 IN절 비교 시 2개의 컬럼을 조합하여 비교합니다.
id가 1이고 bar가 'a'인 경우, id가 2이고 bar가 'b'...
NOT IN 조건도 동일하게 작동합니다.
참고
- http://stackoverflow.com/questions/4622453/where-col1-col2-in-sql-subquery-using-composite-primary-key
'MySQL' 카테고리의 다른 글
[MySQL] 테이블의 용량 확인하기 (1) | 2016.10.04 |
---|---|
[MySQL] 테이블을 지우지도 만들지도 못할 때.. 테이블만이라도 복구하기 (1) | 2016.08.31 |
Trim 함수를 써서 공백을 모두 제거하기 (0) | 2016.08.11 |
base64 인코딩/디코딩 (0) | 2016.08.11 |
JPA + MySQL 파이프가 깨어짐 (Disconnector) (0) | 2016.07.18 |