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')
Sehen Sie es auf sqlfiddle .
Alternativ können Sie die gewünschten Daten in einem einzigen Durchgang extrahieren, wenn Sie die Typen zu einer Zeichenfolge mit Trennzeichen verketten möchten:
SELECT ID, GROUP_CONCAT(TYPE)
FROM types
WHERE COLOR IN ('Red', 'Blue')
GROUP BY ID
HAVING COUNT(*) = 2
Sehen Sie es auf sqlfiddle .
Beachten Sie, dass Ihre Tabelle möglicherweise mehrere Datensätze mit demselben (ID, COLOR)
enthält Paar, sollten Sie COUNT(*)
ersetzen mit dem teureren COUNT(DISTINCT COLOR)
.