sql >> Database teknologi >  >> RDS >> Mysql

MySQL-forespørgsel til at søge efter elementer med bestemte tags

hvis du vil have varen med et af de to tags, så:

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

hvis du ønsker, at varen skal have begge tag, så:

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

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

Denne forespørgsel giver id og vare fra elementtabellen. Det giver en vare, som har både gul og frugtmærke. og varer med kun rødt mærke.

hvis du ønsker at få varer med to tags og kun to tags, så brug følgende betingelse i at have klausul

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


  1. Falsk udenlandsk nøgle begrænsning mislykkes

  2. Hvordan kan jeg få tabelnavnet i en PostgreSQL triggerfunktion?

  3. Tilføj WHERE-sætninger til SQL dynamisk / programmatisk

  4. Dvale tab af præcision i resultater, når du kortlægger et tal (22,21) til BigDecimal