我有临时表NOT EXISTS
,我会收集记录,最终我会在某些时候执行 SELECT I.UnitId
FROM #Inserts AS I
WHERE NOT EXISTS (
SELECT 1
from #Inserts AS INS
INNER JOIN Organisation AS O
ON INS.OrganisationId = O.OrganisationId
AND INS.UnitId = O.UnitId
)
。在此之前,我需要过滤掉一些数据。第一个查询使用的是 DELETE INS FROM #Inserts AS INS
INNER JOIN Organisation AS O
ON INS.OrganisationId = O.OrganisationId
AND INS.UnitId = O.UnitId
,但它没有返回正确的结果:
SELECT * FROM #Inserts
但是,如果执行以下操作:
NOT EXISTS
然后,如果我DELETE
我可以看到记录被过滤,因为我已经预料到了。我对{{1}}做错了什么?我怎样才能获得与{{1}}相同的行为?
答案 0 :(得分:2)
我相信你想要一个相关的子查询:
SELECT I.UnitId
FROM #Inserts I
WHERE NOT EXISTS (SELECT 1
FROM Organisation AS O
WHERE I.OrganisationId = O.OrganisationId AND I.UnitId = O.UnitId
);
您的版本正在运行独立子查询。如果返回任何行,则NOT EXISTS
将返回false。