从RIGHT JOIN返回没有匹配项的行

时间:2012-10-11 14:54:04

标签: tsql sybase

在简单的RIGHT JOIN声明中:

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

如何仅从DEST_TABLE返回DID没有来自RIGHT JOIN子句的行?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

你可能会把这个写得更好:

SELECT d.*
    FROM DEST_TABLE d
    WHERE NOT EXISTS(SELECT 1
                         FROM SRC_TABLE s
                         WHERE s.COL = d.COL)

答案 2 :(得分:1)

select *
from SRC_TABLE
right join DEST_TABLE
on SRC_TABLE.COL = DEST_TABLE.COL
where SRC_TABLE.COL IS NULL

答案 3 :(得分:0)

EXECEPT是另一种选择

select DEST_TABLE.COL from DEST_TABLE
EXCEPT
select SRC_TABLE.COL  from SRC_TABLE