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

Cláusula Dónde Múltiple de MySQL

Creo que buscas esto:

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

No puede usar AND, porque los valores no pueden ser 24 red y 25 big y 27 round al mismo tiempo en la misma fila, pero debe verificar la presencia de style_id, style_value en varias filas, bajo el mismo image_id .

En esta consulta estoy usando IN (que, en este ejemplo particular, es equivalente a OR), y estoy contando las distintas filas que coinciden. Si coinciden 3 filas distintas, significa que los 3 atributos están presentes para ese image_id , y mi consulta lo devolverá.