Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage, um eine ID zu finden, bei der mehrere Bedingungen für eine Spalte erfüllt sind

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) .