gpt4 book ai didi

SQL连接所有值都存在的表的有效方法

转载 作者:行者123 更新时间:2023-12-04 14:03:24 25 4
gpt4 key购买 nike

table 1
item group_id
123 aaaa
432 bbbb
534 aaaa
765 cccc
656 aaaa
656 cccc
111 cccc

group_id group_name
aaaa groupA
bbbb groupB
cccc groupC

我想找到同时包含 765 和 656 的所有组 - 在本例中 GroupC 包含这两个值。

有没有办法避免一堆嵌套查询或 AND 语句?假设表 1 可以有数千个配对,我必须找到包含所有 30 个项目列表的组编写一个非常大的查询来回答这个问题会很丑陋。

我希望我可以说“where in (765,656)”但它的行为有所不同。如果有一堆项目要匹配,它会变得困惑。

SQL fiddle http://sqlfiddle.com/#!9/6581eb/9

示例数据(以防 SQL Fiddle 由于某种原因无法访问):

create table table1(itemID int,groupID varchar(4));
insert into table1(itemID,groupID)
values
(123,'aaaa')
,(432,'bbbb')
,(534,'aaaa')
,(765,'cccc')
,(656,'aaaa')
,(656,'cccc')
,(111,'cccc');

create table table2(groupID varchar(4),groupName varchar(6));
insert into table2(groupID,groupName)
values
('aaaa','groupA')
,('bbbb','groupB')
,('cccc','groupC');

最佳答案

最简单的方法是使用group byhaving:

SELECT group_name
FROM table2 g
JOIN table1 t on g.group_id = t.group_id
WHERE t.item in (765,656)
GROUP BY group_name
HAVING COUNT(DISTINCT t.item) = 2

关于SQL连接所有值都存在的表的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51503760/

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