Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Cláusula Múltipla Onde do MySQL


Acho que você está atrás disso:
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

Você não pode usar AND porque os valores não podem ser 24 red e 25 big e 27 round ao mesmo tempo na mesma linha, mas você precisa verificar a presença de style_id, style_value em várias linhas, sob o mesmo image_id .

Nesta consulta estou usando IN (que, neste exemplo específico, é equivalente a um OR), e estou contando as linhas distintas que correspondem. Se 3 linhas distintas corresponderem, significa que todos os 3 atributos estão presentes para esse image_id , e minha consulta o retornará.