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

Clause WHERE multiples MySQL

Je pense que vous recherchez ceci :

SELECT image_id
FROM list
WHERE (style_id, style_value) IN ((24,'red'),(25,'big'),(27,'round'))
GROUP BY image_id
HAVING count(distinct style_id, style_value)=3

Vous ne pouvez pas utiliser AND, car les valeurs ne peuvent pas être 24 red et 25 big et 27 round en même temps dans la même ligne, mais vous devez vérifier la présence de style_id, style_value sur plusieurs lignes, sous le même image_id .

Dans cette requête, j'utilise IN (qui, dans cet exemple particulier, équivaut à un OR), et je compte les lignes distinctes qui correspondent. Si 3 lignes distinctes correspondent, cela signifie que les 3 attributs sont présents pour cet image_id , et ma requête le renverra.