2010-04-29 3 views

Répondre

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

correct. réponse exacte. – Karthik

+1

que faire si vous obtenez 4,4,4 dans un seul groupe? –

+1

Changer COUNT (*) = 3 à COUNT (DISTINCT 'num') = 3 devrait corriger cela –

0

Que diriez-vous

;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

Ceci est une version très légèrement modifiée de la réponse de zerkms:

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