두개의 테이블에서 각각 한개의 칼럼을 비교하여 없는것을 찾는 조인이 부정형 조인 / 안티 조인이라 한다.
두개의 테이블 A , B 가 아래와 같이 있다고 하자.
만일 A not in (B) 를 한다면 결과 값은 bbb 가 나오게 된다.
만일 B not in (A) 가 된다면? 아래의 그림처럼 ccc, ddd 가 나오게 된다.
소스는 심플하다.
select
distinct a.id , a.name
from A a
where
a.id is not null
and a.id not in (select /*+ HASH_AJ*/ id from B where id is not null)
- 오라클 11g부터는 not null을 명시 하지 않아도 된다. 그전 버전을 사용한다면 꼭 not null을 넣어주기 바랍니다.(결과값이 달라집니다.)
- 실행계획은 강제적으로 /*+ HASH_AJ*/ 을 넣었습니다. 명시 하지 않으면 다르게 실행될 가능성이 있습니다.
'Database > DB' 카테고리의 다른 글
mysql workbench 작업시 fk 칼럼 속성 변경시엔 확인을 잘해야합니다. (0) | 2016.06.15 |
---|---|
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) mysql (0) | 2014.03.30 |
toad 쿼리에서 갑자기 한글이 않보일때!! (6) | 2012.05.23 |
DBlink 시 CLOB으로 지정된 Data Type 은 포기하세요.(view로 만드셔야 됩니다.) (1) | 2012.03.30 |
java.sql.SQLException : ORA-02068 ORA-03113 (0) | 2012.02.27 |