gpt4 book ai didi

MySQL连接表,其中所有左侧记录都在右侧

转载 作者:行者123 更新时间:2023-11-29 06:06:57 27 4
gpt4 key购买 nike

我需要从表 A 中获取也在表 B 中的匹配记录。但我不知道是否可以在一个查询中完成此操作。

表A

id | order_id | title
----------------------------------
1 | 1114 | Product 1
2 | 1115 | Product 1
3 | 1115 | Product 2
4 | 1116 | Product 1
5 | 1117 | Product 3
6 | 1118 | Product 4
7 | 1118 | Product 5

表B

id | order_id | a_id | title
----------------------------------
1 | 2221 | 1 | Product 1
2 | 2222 | 2 | Product 1
3 | 2222 | 3 | Product 2
4 | 2223 | 7 | Product 5

现在我需要表 A 中的所有 order_id 值,其中所有产品也在表 B 中。因此这将导致:

1114
1115

1116 失败,因为没有 b.a_id4
1117 失败,因为没有 b.a_id5
1118 失败,因为 67 不在 b.a_id

我尝试了 INNER JOIN,但这也会返回 1118。我还尝试了 LEFT JOINWHERE b.a_id IS NULL,但这恰恰相反。所以我尝试了 RIGHT JOIN,但它也返回了 1118

查看此 SQL Fiddle .

我希望我明确了我的目标是什么,我很好奇这是否可以通过一个查询来管理。

最佳答案

它并不完美,但它确实通过 SQL Fiddle 为您的现有数据返回了正确的结果。也许您可以以此为起点?

SELECT a.order_id, count(distinct a.id) as aCount, count(distinct b.a_id) as bCount
FROM a
LEFT JOIN b ON a.id = b.a_id
GROUP BY a.order_id
HAVING aCount = bCount;

关于MySQL连接表,其中所有左侧记录都在右侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40898150/

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