我有两个由ID列链接的表。我们将它们称为表A和表B.我的目标是找到表A中表B中没有记录的所有记录。例如:
**Table A:**
ID Value
-- -------
1 value1
2 value2
3 value3
4 value4
**Table B**
ID Value
-- -------
1 x
2 y
4 z
4 l
正如你所看到的,表B中不存在ID = 3的记录,所以我想要一个查询,它将从表A给出记录3.我目前的方式是AND NOT EXISTS (SELECT ID FROM TableB where TableB.ID = TableA.ID)
,但由于表格很大,因此表现非常糟糕。此外,当我尝试使用TableB.ID为null的Left Join时,它不起作用。有人可以提出替代方案吗?
答案 0 :(得分:4)
尝试Not IN
AND tablea.id NOT In (SELECT ID FROM TableB)
查看更多http://www.java2s.com/Code/SQLServer/Select-Query/NOTIN.htm
答案 1 :(得分:1)
您可以将其替换为
SELECT
a.ID,
a.Value
FROM Table_A AS a
LEFT JOIN Table_B AS b ON a.ID = b.ID
WHERE b.ID IS NULL
此解决方案应该比IN()
和EXISTS()
替代方案更有效。来源here
答案 2 :(得分:0)
SELECT ID
FROM Table_A
EXCEPT
SELECT ID
FROM Table_B;