Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Multiple Where Clausola

Penso che tu stia cercando questo:

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

Non puoi usare AND, perché i valori non possono essere 24 red e 25 big e 27 round contemporaneamente nella stessa riga, ma è necessario verificare la presenza di style_id, style_value in più righe, sotto lo stesso image_id .

In questa query sto usando IN (che, in questo particolare esempio, equivale a un OR) e sto contando le righe distinte che corrispondono. Se 3 righe distinte corrispondono, significa che tutti e 3 gli attributi sono presenti per quel image_id e la mia richiesta lo restituirà.