可能重复:
SQL NOT IN not working
我在NOT IN和NOT EXISTS的结果集中获得了不同的结果。这是基本查询:
以下查询将返回300行。
select VendorID from Vendors
如果我添加一个where子句只返回也在运营商表中的供应商,我会得到50行。
select VendorID from Vendors where VendorID in(select CarrierId from Carriers)
我希望NOT IN会返回上面查询中没有显示的供应商。换句话说,300家供应商减去上面列出的50家供应商。
select VendorId from Vendors where VendorId not in(select CarrierId from Carriers)
事实并非如此。我使用Not In子句得到0行。
如果我使用NOT EXIST,我会得到我期望的250行。
select VendorID from Vendors where NOT EXISTS (select CarrierID from Carriers where CarrierID = VendorID)
NOT IN和NOT EXISTS之间的区别是什么?