SQL 哪个元素不包含与 X 的 n2m 关系

发布于 2024-11-09 13:11:01 字数 381 浏览 0 评论 0原文

我在 SQL 中有一个 to m 关系,如下所示:

表 A:

Id
 1
 2
 3

表 B:

Id  
 1    
 2
 3

关系表 AB:

Id_A  Id_B
 1      1
 1      3
 2      3

这意味着表 A 中 ID 为 1 的对象与表 B 中 ID 为 1 的对象相关,同时 A:1 与 B 相关: 3 和 A:2 与 B:3。

现在,我想要完成的是从表 A 中获取与 B:1 没有关系的所有 Id。这应该返回 A:2 和 A:3。

我怎样才能做到这一点?

I have a n to m relationship in SQL like this:

Table A:

Id
 1
 2
 3

Table B:

Id  
 1    
 2
 3

Relationship table AB:

Id_A  Id_B
 1      1
 1      3
 2      3

This means the object at table A with Id 1 is related with the object at table B with Id 1, also A:1 with B:3 and A:2 with B:3.

Now, what I am trying to accomplish is to get all Ids from table A, that do not have a relation with B:1. This should return A:2 and A:3.

How can I accomplish that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

耀眼的星火 2024-11-16 13:11:01
SELECT id
FROM TableA
EXCEPT
SELECT Id_A
FROM TableAB
WHERE Id_B=1

或者(如果您需要 TableA 中未显示的其他列)

SELECT a.id /*,a.foo, a.bar*/
FROM TableA a
WHERE NOT EXISTS(SELECT * 
                 FROM TableAB ab 
                 WHERE ab.Id_B=1 AND ab.Id_A=a.Id)
SELECT id
FROM TableA
EXCEPT
SELECT Id_A
FROM TableAB
WHERE Id_B=1

Or (If you need additional columns from TableA not shown)

SELECT a.id /*,a.foo, a.bar*/
FROM TableA a
WHERE NOT EXISTS(SELECT * 
                 FROM TableAB ab 
                 WHERE ab.Id_B=1 AND ab.Id_A=a.Id)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文