컴퓨터/MSSQL

두 테이블의 일치하지 않는 항목 조회(NOT IN, NOT EXIST)

k1asd1 2022. 11. 4. 08:58
728x90
반응형

A 테이블의 데이터를 기준으로 B테이블에 데이터를 삽입한 뒤 사용자에 의해 삭제가 되었든 어떠한 이유에 의해 데이터가 삽입되지 않았든 A테이블과 B테이블을 비교하여 B테이블에 없는 데이터를 A테이블에서 찾아야 할 일이 생겼습니다.

 

A테이블과 B테이블은 비교해야할 칼럼이 많기에 단일 또는 다중으로 사용 가능한 방법으로 찾다가 알게 되어 기록으로 남기고자 합니다.

 

방법은 간단합니다.

-- db_a 테이블에서 db_b 테이블의 데이터가 포함되지 않은 데이터 조회
-- 조회 조건 추가 가능
SELECT *
  FROM db_a AS a
 WHERE column1_a NOT IN (SELECT column1_b
                           FROM db_b AS b)

-- db_a 테이블에서 db_b 테이블의 데이터가 포함되지 않은 데이터 조회
-- 조회 조건 추가 가능
SELECT *
  FROM db_a AS a
 WHERE NOT EXISTS (SELECT column1_b, column2_b, column3_b
                     FROM db_b AS b
                    WHERE a.column1_b = b.column1_b
                      AND a.column2_b = b.column2_b
                      AND a.column3_b = b.column3_b)
                      
-- 조회 조건 추가 예시
SELECT *
  FROM db_a AS a
 WHERE a.column1_a = '1'
   AND NOT EXISTS (SELECT column1_b, column2_b, column3_b
                     FROM db_b AS b
                    WHERE b.column1_b = '1'
                      AND a.column1_b = b.column1_b
                      AND a.column2_b = b.column2_b
                      AND a.column3_b = b.column3_b)

 

 

이상입니다.

728x90
반응형