0

我正在尝试计算跨越三个表的数据记录。我有一个产品表、一个组表和一个显示产品所在组的表。如下所示:

产品

产品_ID 产品名称
1 一个产品
2 另一种产品

团体

Group_ID 团队名字
10 A组
20 B组
30 C组
40 D组

产品分组

产品_ID Group_ID
1 10
1 20
1 30
2 20
2 40
3 50

我正在尝试编写一个查询,如果给定组 ID 的条件,例如(10,20,30),它将返回产品 1。如果我给出组 id 说(20),它将返回产品1 和产品 2

我努力了:

select * from product_grouping
where group_id = 10 and group_id = 20 and group_id = 30
4

1 回答 1

0

使用聚合和having

select pg.group_id
from product_grouping pg
where pg.group_id in (10, 20 30)
group by product_id
having count(*) = 3;

如果产品分组可以重复,请使用having count(distinct pg.group_id) = 3.

于 2021-04-19T16:30:19.047 回答