SQL:搜索正确的记录组

时间:2019-03-13 17:00:29

标签: sql

假设我们有一个 分组 表,该表具有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个不同的值>

3 个答案:

答案 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