Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL Multiple Where-Klausel

Ich denke, dass Sie hinter diesem her sind:

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

Sie können AND nicht verwenden, da Werte nicht 24 red sein können und 25 big und 27 round gleichzeitig in derselben Zeile, aber Sie müssen das Vorhandensein von style_id, style_value überprüfen in mehreren Zeilen unter derselben image_id .

In dieser Abfrage verwende ich IN (das in diesem speziellen Beispiel einem ODER entspricht), und ich zähle die unterschiedlichen Zeilen, die übereinstimmen. Wenn 3 eindeutige Zeilen übereinstimmen, bedeutet dies, dass alle 3 Attribute für diese image_id vorhanden sind , und meine Abfrage wird es zurückgeben.