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

SQL:Umožněte prohledávat barvy z tabulky barev

Zde byste použili podmíněné agregace. Například pro červenou a modrou chcete najít karty kde

  1. existují obě barvy
  2. neexistuje žádná jiná barva

To znamená, že pokud započítám červenou a modrou kartu, musím získat 2. Pokud spočítám všechny barvy, musím také získat 2. (Stejné pro jednu, tři nebo více barev.)

Použijte tedy tento dotaz a změňte pouze uvedené barvy a počet barev:

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. Výběr prvního řádku na skupinu

  2. MySQL Partitioning / Sharding / Splitting - jakou cestou se vydat?

  3. MySQL dotaz – najděte nové uživatele za den

  4. laravel s:Sloupec nenalezen