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, om du är nöjd med att ha typerna sammanlänkade i en avgränsad sträng, kan du extrahera önskad data i ett enda pass:
SELECT ID, GROUP_CONCAT(TYPE)
FROM types
WHERE COLOR IN ('Red', 'Blue')
GROUP BY ID
HAVING COUNT(*) = 2
Se den på sqlfiddle .
Observera att om din tabell kan innehålla flera poster med samma (ID, COLOR)
par, bör du ersätta COUNT(*)
med den dyrare COUNT(DISTINCT COLOR)
.