我一直在看这个并且不明白为什么我没有得到结果集这里是我的查询
SELECT UserID FROM @SelectedID
SELECT UserID FROM @SelectedIdValue
SELECT UserID FROM @SelectedID WHERE NOT EXISTS (SELECT UserID FROM @SelectedIdValue
这是返回的结果集
如您所见,第二个结果集中不存在194,那么为什么我没有返回194?我在这里使用NOT EXISTS
错了吗?
答案 0 :(得分:4)
您需要一个相关的子查询:
SELECT UserID
FROM @SelectedID si
WHERE NOT EXISTS (SELECT 1
FROM @SelectedIdValue siv
WHERE si.UserId = siv.UserId
);
您的查询版本只是对所有行返回false。子查询返回一个值,因此存在一些东西。
编辑:
如果您愿意,可以将其标记为left outer join
:
SELECT si.UserID
FROM @SelectedID si LEFT OUTER JOIN
@SelectedIdValue siv
ON si.UserId = siv.UserId
WHERE siv.UserId IS NULL;
答案 1 :(得分:0)
exists子查询仅检查用户ID是否存在,而不是它们的值是什么。如果你更换"不存在"使用" UserID不在"您的查询将返回预期的结果。请注意"在"如果列中有空值,则无法按预期工作,请在使用""之前验证是否可以。
答案 2 :(得分:0)
SELECT userid
FROM @SelectedID
WHERE userid NOT IN (SELECT userid
FROM @SelectedIdValue)