Mysql
 sql >> Database >  >> RDS >> Mysql

Query MySQL per trovare l'ID in cui si verificano più condizioni per una colonna

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

Guardalo su sqlfiddle .

In alternativa, se sei felice di avere i tipi concatenati in una stringa delimitata, puoi estrarre i dati desiderati in un unico passaggio:

SELECT   ID, GROUP_CONCAT(TYPE)
FROM     types
WHERE    COLOR IN ('Red', 'Blue')
GROUP BY ID
HAVING   COUNT(*) = 2

Guardalo su sqlfiddle .

Nota che, se la tua tabella può contenere più record con lo stesso (ID, COLOR) coppia, dovresti sostituire COUNT(*) con il più costoso COUNT(DISTINCT COLOR) .