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

MySQL Multiple Where-klausul

Jeg tror, ​​du er ude efter dette:

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 ikke bruge OG, fordi værdier ikke kan være 24 red og 25 big og 27 round på samme tid i samme række, men du skal kontrollere tilstedeværelsen af ​​style_id, style_value i flere rækker under samme image_id .

I denne forespørgsel bruger jeg IN (som i dette særlige eksempel svarer til en OR), og jeg tæller de forskellige rækker, der matcher. Hvis 3 forskellige rækker matcher, betyder det, at alle 3 attributter er til stede for det image_id , og min forespørgsel vil returnere den.



  1. Sådan får du de seneste funktioner i Office 365

  2. MariaDB sammensatte dato- og tidsenheder forklaret

  3. Partitionering af en databasetabel i MySQL

  4. PHP password_verify virker ikke mod databasen