加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 07:28:08 所属栏目:MsSql教程 来源:网络整理
导读:这就是我想要完成的事情: 我有两张桌子,先叫他们第二张.它们每个都有一个ID列.他们可能有其他列,但这些并不重要.我有第三张桌子,称之为第三张桌子.它包含两列,ID和OTHERID. OTHERID引用第一和第二表中可能存在或不存在的条目. 我想查询第三个并查找没有在第
这就是我想要完成的事情:

我有两张桌子,先叫他们第二张.它们每个都有一个ID列.他们可能有其他列,但这些并不重要.我有第三张桌子,称之为第三张桌子.它包含两列,ID和OTHERID. OTHERID引用第一和第二表中可能存在或不存在的条目.

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

例:

第一桌:

ID
1
2
3

第二表:

ID
6
7
8

第三张桌子

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

在这种情况下,我想要从第一个表或第二个表中没有匹配ID的第三个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读