2010-04-29 117 views
1

我有一個簡單的表:如何檢查包含SQL中某些元素的組?

id num 

1 7 
1 5 
1 4 

2 5 
2 4 
2 7 

3 4 
3 7 

如何選擇具有NUM 5以及圖7和4

對於這個例子IDS IDS:1,2

+0

'num'的列類型是什麼?它是一個字符串(例如ID = 1 Num =「7 1 5 1 4」)? – 2010-04-29 09:59:53

+1

我認爲你的意思是ids 1和2. – 2010-04-29 10:20:25

回答

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

是正確的。確切的答案。 – Karthik 2010-04-29 10:10:50

+1

如果你在一個組中獲得4,4,4,該怎麼辦? – 2010-04-29 10:23:57

+1

將COUNT(*)= 3更改爲COUNT(DISTINCT'num')= 3應該修復該問題 – 2010-04-29 10:30:05

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 
1

這是一個zerkms的回答非常略微修改版本:

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