sql >> Databasteknik >  >> RDS >> Mysql

MySQL-fråga för att söka efter objekt med vissa taggar

om du vill ha objektet med någon av de två taggen gör du så här:

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

om du vill att objektet ska ha både taggar:

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

baserat på din kommentar

  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';

Denna fråga ger id och objekt från objekttabellen. Det ger föremål som har både gult och fruktmärke. och föremålen med endast röd tagg.

om du vill få objekt med två taggar och bara två taggar använd följande villkor i att ha klausul

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


  1. Hur använder jag en IF-sats i en MySQL-anslutningsfråga?

  2. Provider med namnet pipes provider fel 40 kunde inte öppna en anslutning till SQL Server fel 2

  3. WHERE-klausul för att hitta alla poster i en specifik månad

  4. MySQL-frågeordning efter flera objekt