SELECT ID, TYPE FROM types NATURAL JOIN (
SELECT ID FROM types GROUP BY ID HAVING SUM(COLOR='Red') AND SUM(COLOR='Blue')
) t WHERE COLOR IN ('Red', 'Blue')
Se den på sqlfiddle .
Alternativt, hvis du er glad for at få typerne sammenkædet i en afgrænset streng, kan du udtrække de ønskede data i et enkelt gennemløb:
SELECT ID, GROUP_CONCAT(TYPE)
FROM types
WHERE COLOR IN ('Red', 'Blue')
GROUP BY ID
HAVING COUNT(*) = 2
Se den på sqlfiddle .
Bemærk, at hvis din tabel kan indeholde flere poster med den samme (ID, COLOR)
par, skal du erstatte COUNT(*)
med den dyrere COUNT(DISTINCT COLOR)
.