본문 바로가기
DB/Oracle

[Oracle] IN, NOT IN 특정 데이터 포함/제외 하기

by yunamom 2022. 4. 15.
728x90
300x250

안녕하세요 yunamom 입니다. :D

 

특정 데이터 값을 포함하는 혹은 제외한 데이터를 추출하고 싶을 때 사용하는 IN, NOT IN 문 사용법에 대하여 포스팅하겠습니다.😊


✨IN 문 사용법

SELECT * 
    FROM TABLE
  WHERE [컬럼명] IN ('A','B'); -- 여러 데이터 제외 가능
  
  
  -- IN 문을 풀이한 쿼리문
SELECT *
    FROM TABLE
  WHERE [컬럼명] = 'A'
     OR [컬럼명] = 'B'

✨NOT IN 문 사용법

SELECT * 
    FROM TABLE
  WHERE [컬럼명] NOT IN ('A','B'); -- 여러 데이터 제외 가능
  
  
  -- NOT IN 문을 풀이한 쿼리문
SELECT *
    FROM TABLE
  WHERE [컬럼명] <> 'A'
    AND [컬럼명] <> 'B'

✨SUBQUERY IN

SELECT * 
    FROM TABLE
  WHERE [컬럼명] IN (SELECT [컬럼명]
                     FROM [TABLE2])

✨SUBQUERY NOT IN

SELECT * 
    FROM TABLE
  WHERE [컬럼명] NOT IN (SELECT [컬럼명]
                         FROM [TABLE2])

 

💡 IN,NOT IN 문 안에 서브쿼리 사용시 주의사항

NOT IN문 서브쿼리의 결과 중에 NULL이 포함되는 경우 데이터가 출력되지 않기 때문에

조회 컬럼에 IS NOT NULL 조건을 작성해야 합니다.

 

NULL은 논리적으로 비교할 수 없는 연산이기 때문에 값이 없게 되는 것이죠.

그러므로, 서브쿼리 내에 해당컬럼이 IS NOT NULL인 조건을 주어 NULL 인 데이터를  제외하고 조회해야 합니다.

SELECT * 
    FROM TABLE
  WHERE [컬럼명] NOT IN (SELECT [컬럼명2]
                         FROM [TABLE2]
                       WHERE [컬럼명2] IS NOT NULL)

oracle

728x90
300x250

코드