我在SQL Server上运行以下查询:
delete from thisTable where id not in (
select theID from thatTable )
没有得到我期望的效果。
在thisTable
中,有2行,其ID为5& 7.
在thatTable
中,7不会出现在任何行的theID
字段中 - 但是5可以。
但是,上述查询并未删除thisTable
行id = 5
。
实际上,上述查询无论如何都不会对thisTable
进行任何更改。
我错过了什么?
TIA。
答案 0 :(得分:3)
子查询中的任何NULL
?
尝试重写为
delete from thisTable
where id not in (select theID
from thatTable
where theID is not null)
或
delete from thisTable
where not exists (select * from thatTable
where thisTable.id = thatTable.theID)
答案 1 :(得分:0)
试试这个
DELETE FROM thistable WHERE ID NOT IN(
SELECT thistable.ID
FROM thistable INNER JOIN thatTable
ON thistable.id = thatTable.id)