sql >> Databasteknik >  >> RDS >> Mysql

SQL:Gör färger från färgtabeller sökbara

Du skulle använda villkorliga aggregationer här. För rött och blått till exempel vill du hitta kort där

  1. båda färgerna finns
  2. ingen annan färg finns

Det betyder att om jag räknar rött och blått för ett kort måste jag få 2. Om jag räknar alla färger måste jag också få 2. (Samma för en, tre eller flera färger.)

Så använd den här frågan och ändra bara de färger som nämns och antalet färger:

select *
from cards_data where id in
(
  select cards_id
  from con_cards_colors
  group by cards_id
  having count(case when colors_id in (select id from colors where name in ('Red','Blue')) then 1 end) = 2 -- i.e. find all
  and count(*) = 2 -- i.e. find only those and no others
);


  1. Fixa DB-dubblettposter (MySQL-bugg)

  2. Antalet MySQL-kolumner matchar inte antalet värden på rad 1

  3. Hur sparar man en länk i mysql?

  4. Hur man väljer objekt om det räknas mer än 3 i Laravel Query