gpt4 book ai didi

sql-server - 如何在一个查询中使用 EXISTS 和 NOT EXISTS?

转载 作者:行者123 更新时间:2023-12-04 00:55:19 34 4
gpt4 key购买 nike

表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

但我也想检查第三张表这些记录是否存在。在同一个查询中使用一个不存在的条件?

例如 Table3Table1_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

最佳答案

条件:

NOT EXISTS (SELECT * FROM Table3)

...如果 Table3 中有任何行,则始终为 false,因此您的查询不返回任何行。

你需要添加一个谓词来显示Table3行是如何限定的,如下图粗体所示:

SELECT Table1.Id
FROM Table1 AS Table1
WHERE EXISTS
(
SELECT 1
FROM Table2 AS Table2
WHERE
Table1.DemoID = Table2.DemoID
AND Table2.IsTrue= 1
)
AND NOT EXISTS
(
SELECT 1
FROM Table3
WHERE
<b>Table3.Table1_ID = Table1.Id</b> -- New
);

演示:db<>fiddle

关于sql-server - 如何在一个查询中使用 EXISTS 和 NOT EXISTS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51693741/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com