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')
Bekijk het op sqlfiddle .
Als u de typen graag wilt samenvoegen tot een gescheiden tekenreeks, kunt u ook de gewenste gegevens in één keer extraheren:
SELECT ID, GROUP_CONCAT(TYPE)
FROM types
WHERE COLOR IN ('Red', 'Blue')
GROUP BY ID
HAVING COUNT(*) = 2
Bekijk het op sqlfiddle .
Merk op dat, als uw tabel meerdere records kan bevatten met dezelfde (ID, COLOR)
paar, moet u COUNT(*)
. vervangen met de duurdere COUNT(DISTINCT COLOR)
.