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

Dotaz MySQL pro vyhledávání položek s určitými značkami

pokud chcete položku s některou z těchto dvou značek, pak:

select distinct item_id, item_name 
from items_tags 
where tag_name in ('yellow', 'fruit'); 

pokud chcete, aby položka měla obě značky, pak:

select item_id, item_name 
from items_tags 
where tag_name in ('yellow', 'fruit')
group by item_id, item_name
having count(*) = 2; 

na základě vašeho komentáře

  select a.id, a.item 
    from items a, items_tags b, tags c 
   where a.id = b.item_id
     and b.tag_id = c.id
group by id, item
  having (group_concat(c.tag) like '%yellow%' 
         and  group_concat(c.tag) like '%fruit%')
      or group_concat(c.tag) = 'red';

Tento dotaz poskytuje ID a položku z tabulky položek. Poskytuje položku, která má žlutou i ovocnou značku. a položky pouze s červenou značkou.

pokud chcete získat položky se dvěma štítky a pouze dvěma štítky, použijte následující podmínku v klauzuli have

(group_concat(c.tag) like '%yellow%' 
and group_concat(c.tag) like '%fruit%'
and count(*) = 2) 
    


  1. NodeJS MySQL - Jak zjistit, zda je připojení uvolněno nebo ne

  2. jak shromáždit více hodnot jako jeden řetězec v postgresu?

  3. Použijte konzolu MySQL prostřednictvím skriptu PowerShell

  4. Ovlivňuje velikost tabulky výkon INSERT?