2

簡単にRIGHT JOIN言えば:

select *
from SRC_TABLE
right join DEST_TABLE
on SRC_TABLE.COL = DEST_TABLE.COL

RIGHT JOIN句と一致しなかった DEST_TABLE の行のみを返すにはどうすればよいですか?

4

4 に答える 4

2

これを次のように書くと、パフォーマンスが向上する可能性があります。

SELECT d.*
    FROM DEST_TABLE d
    WHERE NOT EXISTS(SELECT 1
                         FROM SRC_TABLE s
                         WHERE s.COL = d.COL)
于 2012-10-11T14:57:46.440 に答える
2

一致しなかった行のみを選択する条件が不足しているだけで、この場合、この列はNULL.

select *
from SRC_TABLE
right join DEST_TABLE
on SRC_TABLE.COL = DEST_TABLE.COL
WHERE SRC_TABLE.COL IS NULL        -- ADD THIS LINE
于 2012-10-11T14:55:59.227 に答える
1
select *
from SRC_TABLE
right join DEST_TABLE
on SRC_TABLE.COL = DEST_TABLE.COL
where SRC_TABLE.COL IS NULL
于 2012-10-11T14:55:44.080 に答える
0

EXECEPT は別のオプションです

select DEST_TABLE.COL from DEST_TABLE
EXCEPT
select SRC_TABLE.COL  from SRC_TABLE
于 2012-10-11T15:44:22.430 に答える