Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête MySQL pour trouver l'ID où plusieurs conditions sont remplies pour une colonne

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

Voir sur sqlfiddle .

Alternativement, si vous souhaitez que les types soient concaténés dans une chaîne délimitée, vous pouvez extraire les données souhaitées en une seule passe :

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

Voir sur sqlfiddle .

Notez que, si votre table peut contenir plusieurs enregistrements avec le même (ID, COLOR) paire, vous devez remplacer COUNT(*) avec le plus cher COUNT(DISTINCT COLOR) .