sql >> Base de Datos >  >> RDS >> Mysql

Consulta Mysql para encontrar ID donde se cumplen múltiples condiciones para una columna

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

Véalo en sqlfiddle .

Alternativamente, si está feliz de tener los tipos concatenados en una cadena delimitada, puede extraer los datos deseados en un solo paso:

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

Véalo en sqlfiddle .

Tenga en cuenta que, si su tabla puede contener varios registros con el mismo (ID, COLOR) par, debe reemplazar COUNT(*) con el COUNT(DISTINCT COLOR) más caro .