SQL语句问题 - 如何检索另一个表中主键不存在的表的记录作为外键

时间:2010-08-06 20:05:10

标签: sql sql-server-2005 tsql

我有一个表(TableA),其中主键作为另一个表(TableB)上的外键存在。我正在尝试编写一个SQL查询(我正在使用SQL Server 2005),它将找到TableA中的所有记录,其中主键在TableB中不存在作为外键(我们将说明加入TableAID)。我怀疑它会使用外连接,但我一直在努力。任何人都可以帮助SQL newb吗?

4 个答案:

答案 0 :(得分:4)

SELECT A.*
FROM TableA AS A
LEFT JOIN TableB AS B ON (A.ID = B.TableAID)
WHERE B.TableAID IS NULL

答案 1 :(得分:4)

您可以使用NOT EXISTS

SELECT columnlist
FROM TableA
WHERE NOT EXISTS(
   SELECT * FROM TableB
   WHERE TableB.column = TableA.column)

答案 2 :(得分:2)

这几乎是SQL中的自然语言(“WHERE NOT EXISTS”):

SELECT A.*
FROM TableA AS A
WHERE NOT EXISTS ( SELECT 1
                   FROM TableB
                   WHERE TableA.ID = B.TableAID
                 )

答案 3 :(得分:0)

Select * from TableA 
where 
 TableA.TableAID not in (select TableB.TableAID from TableB)