Continuous Challenge

[불친절한 SQL 프로그래밍] [7장] WHERE절 - 7.4 IN조건 본문

Study/불친절한 SQL 프로그래밍

[불친절한 SQL 프로그래밍] [7장] WHERE절 - 7.4 IN조건

응굥 2019. 11. 29. 10:25
728x90
728x90

IN조건은 expr의 목록과 일치하거나 일치하지 않는 행을 반환한다.

expr [NOT] IN (expr [,expr])

 

IN조건은 널이 입력되어도 결과가 반환된다.

위 쿼리는 

SELECT ename, mgr FROM emp WHERE mgr = 7839 OR mgr = NULL;

의 쿼리로 해석된다.

mgr = NULL 조건은 UNKNOWN으로 평가되고, OR 조건은 조건이 하나라도 TRUE이면 TRUE이므로 mgr = NULL 조건이 무시된다.

 

NOT IN 조건의 expr에 널이 입력되면 결과가 반환되지 않는다.

 

IN 조건을 아래와 같은 방식으로 사용할 수도 있다.

위 쿼리는

SELECT ename, empno, mgr FROM emp WHERE (empno = 7839 OR mgr = 7839);

의 쿼리로 해석된다.

구문이 다소 길어지더라도 이와 같이 가독성 높은 쿼리를 작성하는 편이 바람직하다.

 

 

  • IN 조건은 목록을 1000개까지만 지정할 수 있는 제약이 있다.
SELECT * FROM emp WHERE (1, deptno) IN ((1,1), ... (1,1001));

하지만 위와 같이 다중 열을 사용하면 1000개 이상의 목록을 지정할 수 있다. 다중 열에서 첫 번째 원소값인 1은 항상 같은 값이기 때문에 무시된다.

728x90
728x90
Comments