테이블 데이터가 이렇게 있다고 했을때,
1. 테이블 left_t
l_id | l_title
----+--------
1 | left_1
2 | left_2
3 | left_3
2. 테이블 right_t
r_id | r_title
----+---------
2 | right_2
3 | right_3
4 | right_4
B 테이블에서 A 테이블과 같은 ID 가 없는것들을 select 할려고 할때.. JOIN을 이용하지 않습니까?
일단..
select *
from
left_t right join right_t
on left_t.l_id = right_t.r_id; |
l_id | l_title | r_id | r_title
----+--------+----+---------
2 | left_2 | 2 | right_2
3 | left_3 | 3 | right_3
| | 4 | right_4
즉, right join 했을때 left_t 의 id가 null인 것들이 제가 원하는 것들이죠.
이걸 뽑아낼려고,
select
r_id, r_title
from (
select *
from left_t right join right_t on left_t.id = right_t.id
) as joined_t
where l_id is null; |
하면
r_id | r_title
----+---------
4 | right_4
이렇게 되긴 하는데요..
제가 궁금한것은..예전엔 이렇게 중첩 select를 안쓰고 join한번에 됐던것 같거든요???
마치..
select *
from
left_t right join right_t
on
left_t.l_id = right_t.r_id
and
left_t.l_id is null; |
뭐 이런 비슷한 것처럼 말이죠.
저건 아닌것 같고..
원래 어떻게 하는게 맞는지요?
|