gpt4 book ai didi

用于查找其他表中不存在的行的 SQL 查询

转载 作者:可可西里 更新时间:2023-11-01 06:38:56 31 4
gpt4 key购买 nike

这是我想要完成的:

我有两张 table ,第一张和第二张。他们每个人都有一个 ID 列。他们可能有其他专栏,但这些并不重要。我有第三张 table ,称之为第三张。它包含两列,ID 和 OTHERID。 OTHERID 引用表 first 和 second 中可能存在或不存在的条目。

我想查询第三个并查找没有在第一个或第二个表中找到的 OTHERID 列值的行。目标是从表 third 中删除这些行。

例子:

第一个表:

ID
1
2
3

第二个表:

ID
6
7
8

第三张 table

ID  | OTHERID
21 1
22 2
23 3
24 4
25 5
26 6
27 7
28 8

在这种情况下,我想从第一个表或第二个表中没有匹配 ID 的第三个检索 ID。我希望取回以下 ID:

24
25

我尝试过的:

我已经做了一些事情来取回不在第一位的第三位的条目:

select t.* from third t where not exists (select * from first f where t.otherid = f.id);

这将使我返回以下行:

ID  | OTHERID
24 4
25 5
26 6
27 7
28 8

同样,我可以得到那些不在第二位的:

select t.* from third t where not exists (select * from second s where t.otherid = s.id);

我会得到:

ID  | OTHERID
21 1
22 2
23 3
24 4
25 5

今天早上我想不通的是如何将两个查询组合在一起以获得两个结果集之间的交集,以便只返回 ID 为 24 和 25 的行。这些是我可以删除的两行,因为它们是孤儿。

你会如何解决这个问题?我认为我在正确的轨道上,但我只是在这一点上旋转,没有任何进展。

最佳答案

也许是这样的:

SELECT third.*
FROM third
LEFT JOIN first ON third.otherID = first.id
LEFT JOIN second ON third.otherID = second.id
WHERE first.id IS NULL AND second.id IS NULL

关于用于查找其他表中不存在的行的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3118469/

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