sql >> Databasteknik >  >> RDS >> Mysql

MySQL Multiple Where-klausul

Jag tror att du är ute efter det här:

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

Du kan inte använda OCH eftersom värden inte kan vara 24 red och 25 big och 27 round samtidigt på samma rad, men du måste kontrollera förekomsten av style_id, style_value i flera rader, under samma image_id .

I den här frågan använder jag IN (som i det här exemplet motsvarar ett OR), och jag räknar de distinkta raderna som matchar. Om 3 distinkta rader matchar betyder det att alla 3 attributen finns för det image_id , och min fråga kommer att returnera den.



  1. Hur väljer man id med max datumgrupp efter kategori i PostgreSQL?

  2. Hur kan jag se SQL-exekveringsplanen i Oracle?

  3. ORACLE SQL:Fyll i saknade datum

  4. Hur man infogar en lång sträng i CLOB-datatyp i Oracle