如何在SQL中检查包含某些元素的组?

时间:2010-04-29 09:57:30

标签: sql

我有一张简单的表格:

id num

1 7
1 5
1 4

2 5
2 4
2 7

3 4
3 7

如何选择具有num 5以及7和4的id

对于此示例ids:1,2

3 个答案:

答案 0 :(得分:3)

SELECT `id` FROM `table`
WHERE `num` IN (4, 5, 7)
GROUP BY `id`
HAVING COUNT(*) = 3

答案 1 :(得分:1)

这是zerkms回答的一个非常略微修改的版本:

SELECT `id` FROM `table` 
WHERE `num` IN (4, 5, 7) 
GROUP BY `id` 
HAVING COUNT(DISTINCT `num`) = 3 

答案 2 :(得分:0)

怎么样

;WITH T AS
(
    SELECT ID, NUM, COUNT(*) OVER(PARTITION BY ID) AS ROWNO,
           SUM(NUM) OVER(PARTITION BY ID) AS SUMNUM
    FROM TABLE
)
SELECT ID, NUM
FROM T
WHERE ROWNO = 3 AND SUMNUM = 16