选择一个在SQL Server中的另一个表中不存在的值?

时间:2014-02-18 03:59:53

标签: sql sql-server

我有两张桌子 如何获得更多信息,如姓名和性别?

@A
ID  Name Gender .....
1   A
2   B
3   C
5   D
6   E

@B
ID PosID
3   1 
5   2

我用这个sql来查询。

SELECT ID
FROM A
EXCEPT
SELECT ID 
FROM B;

我从结果中得到了这个。

ID
1
2
6

2 个答案:

答案 0 :(得分:4)

尝试使用not exists,例如:

SELECT * 
FROM   a 
WHERE  NOT EXISTS (SELECT 1 
                   FROM   b 
                   WHERE  a.id = b.id); 

或使用left outer join。或not in

答案 1 :(得分:0)

试试这个

LEFT JOIN

SELECT  L.*
FROM    Table1 L
LEFT JOIN
        Table2 R
ON      R.ID = L.ID
WHERE   R.ID IS NULL

不在

SELECT  L.*
FROM    Table1 L
WHERE   L.ID NOT IN
    (
    SELECT  ID
    FROM    Table2 R
    )

不存在

SELECT  L.*
FROM    Table1 L
WHERE   NOT EXISTS
    (
    SELECT  NULL
    FROM    Table2 R
    WHERE   R.ID = L.ID
    )