【发布时间】:2019-01-12 14:14:47
【问题描述】:
表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
但我也想检查第三张表这些记录是否存在。在同一个查询中使用一个不存在的条件?
例如 Table3 有 Table1_ID 列值只有 1 现在新的不存在查询应该给我结果 2,3,4,5
我试过了——
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)
但它没有给我任何记录。它应该给我剩下的记录是 2,3,4,5
【问题讨论】:
标签: sql-server sql-server-2012 exists