sql >> Databáze >  >> RDS >> Mysql

Klauzule MySQL Multiple Where

Myslím, že jste po tomto:

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

Nemůžete použít AND, protože hodnoty nemohou být 24 red a 25 big a 27 round současně ve stejném řádku, ale musíte zkontrolovat přítomnost style_id, style_value ve více řádcích pod stejným image_id .

V tomto dotazu používám IN (to je v tomto konkrétním příkladu ekvivalentní OR) a počítám odlišné řádky, které se shodují. Pokud se shodují 3 různé řádky, znamená to, že pro daný image_id jsou přítomny všechny 3 atributy a můj dotaz to vrátí.



  1. (2006, 'MySQL server odešel') v WSGI django

  2. alter table upravit sloupec v databázi Oracle

  3. MySQL:Udělte **všechna** oprávnění k databázi

  4. Objekt nelze v MySQLi PHP převést na řetězec