본문 바로가기
Develop/DATABASE

오라클)WHERE 절 - IN

by 걸어다니는 종합병원 2022. 10. 5.
반응형

IN 조건 - expr1 [NOT] IN (expr2 [, expr2])

expr1이 expr2의 목록에 포함되는 행을 반환

 


job이 ANALYST이거나 MANAGER인 행

SELECT ename, job FROM emp WHERE job = 'ANALYST' OR job = 'MANAGER';

위의 쿼리와 논리적으로 동일하며, IN 조건은 OR과 동일하다.


deptno가 20이고 job이 MANAGER이거나 deptno가 20이고 job이 ANALYST인 행


job이 ANALYST와 MANAGER가 아닌 행

SELECT ename, job FROM emp WHERE NOT (job IN ('ANALYST', 'MANAGER'));
SELECT ename, job FROM emp WHERE NOT (job = 'ANALYST' OR job = 'MANAGER');
SELECT ename, job FROM emp WHERE (job <> 'ANALYST' AND job <> 'MANAGER');

해당 쿼리는 위의 쿼리와 동일하다.


NOT IN 조건은 expr이 NULL이면 반환되는 행이 없음.

SELECT ename, mgr FROM emp WHERE NOT (mgr IN (7839, NULL));
SELECT ename, mgr FROM emp WHERE NOT (mgr = 7839 OR mgr = NULL);
SELECT ename, mgr FROM emp WHERE (mgr <> 7839 AND mgr <> NULL);

해당 쿼리와 동일하다.


IN 조건은 NULL이 입력되어도 행 반환.

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

해당 쿼리와 동일하다.


empno나 mgr이 7839인 행

SELECT * FROM emp WHERE deptno IN (1, ...1001); -- 최대 1000개
SELECT * FROM emp WHERE (1, deptno) IN ((1, 1) ... (1, 1001); -- 1000개 이상 가능
----(첫번째 1은 항상 같은값으로 무시됨)

※ IN 조건은 목록을 100개까지만 지정할 수 있으며, 다중 열 이용시 1000개 이상 목록 지정가능.

 

 

 

반응형

'Develop > DATABASE' 카테고리의 다른 글

오라클)WHERE 절 - NULL, LNVVL  (0) 2022.10.10
오라클)WHERE 절 - LIKE  (0) 2022.10.10
오라클)WHERE 절 - BETWEEN(범위 조건)  (1) 2022.10.04
오라클)WHERE 절 - 논리 조건  (0) 2022.10.04
오라클)WHERE 절 - 비교 조건  (0) 2022.10.03

댓글