表1
Id Name DemoID
1 a 33
2 b 44
3 c 33
4 d 33
5 e 44
表2
Id DemoID IsTrue
11 33 1
12 44 1
表3
Id Table1_ID
11 1
现在,我们可以使用以下查询找到Table2中存在的DemoID-
SELECT Table1.Id FROM Table1 as Table1
WHERE EXISTS
(
SELECT * FROM Table2 as Table2
WHERE Table1.DemoID = Table2.DemoID AND Table2.IsTrue= 1
)
结果-1,2,3,4,5
但是我也想在第3个表中检查那些记录是否存在。在同一查询中使用另一个条件NOT EXISTS?
例如Table3
的{{1}}列值只有1,现在新的不存在查询应该给我结果Table1_ID
我尝试过-
2,3,4,5
但是它没有给我任何记录。它应该给我剩下的记录是2,3,4,5
答案 0 :(得分:7)
条件:
SELECT Table1.Id FROM Table1 as Table1
WHERE EXISTS
(
SELECT * FROM Table2 as Table2
WHERE Table1.DemoID = Table2.DemoID AND Table2.IsTrue= 1
)
AND NOT EXISTS (SELECT * FROM Table3)
...如果Table3中有任何行,则始终为false,因此您的查询不返回任何行。
您需要添加一个谓词以显示Table3行如何限定,如下面的粗体所示:
NOT EXISTS (SELECT * FROM Table3)
演示:db<>fiddle