假设我们有一个 分组 表,该表具有2列: Group_ID 和 < em> Item_ID 。两者都是整数。对于一个简化的示例,假设 Item_ID 可以是以下三个值之一:{1,2,3}。然后, Group_IDs 代表此数据的不同排列组。例如:
Group_ID Item_ID
1 1
2 2
3 3
4 1
4 2
5 1
5 3
6 2
6 3
7 1
7 2
7 3
如果输入 Item_Ids 的集合,它将返回与 Group_ID 相关的SQL到那个收藏?
例如,在上面的示例中,输入(2,3)=> 6
编辑: 我想在更复杂的表上使用解决方案查询,其中 Item_ID 有16个不同的值>
答案 0 :(得分:2)
使用条件聚合
select group_id
from table t1
where Item_ID in(2,3)
and exists( select 1 from table t2 where t1.group_id=t2.group_id
having count(distinct t2.Item_ID)=2 )
group by group_id
having count(distinct item_id)=2
答案 1 :(得分:1)
假设您没有重复的内容,我会简单地这样做:
select group_id
from t
group by group_id
having sum(case when Item_ID in (2, 3) then 1 else 0 end) = count(*) and
count(*) = 2;
这似乎是最简单的方法。
答案 2 :(得分:1)
另一个执行此操作的SQL
SELECT Group_id
FROM YourTable
GROUP BY Group_id
HAVING COUNT(Item_ID) = 2
AND COUNT(CASE WHEN Item_ID = 2 THEN Item_ID END) > 0
AND COUNT(CASE WHEN Item_ID = 3 THEN Item_ID END) > 0