Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL - изберете всички елементи с множество хаштагове

добре, че знаете вашия списък, така че това е прост низ. и си знаеш сметката. те могат да бъдат заглушени в mysql Prepared Statement и изпълнен.

Но по-долу е списъкът и броят, включени само за демонстрационни цели.

create table items
(   id int not null
);

create table tags
(   id int not null,
    name varchar(50)
);

create table item_tags
(   iid int not null,
    tid int not null
);

insert items (id) values (1),(2),(3),(4);
insert tags(id,name) values (1,'cat'),(2,'animal'),(3,'has nose');
-- note, everything has a nose so far:
insert item_tags (iid,tid) values (1,1),(1,3),(2,1),(2,3),(3,2),(3,3),(4,1),(4,2),(4,3);

select i.id,count(i.id)
from items i
join item_tags junc
on junc.iid=i.id
join tags t
on t.id=junc.tid and t.name in ('cat','animal')
group by i.id
having count(i.id)=2

-- only item 4 has both cat and animal (note nose is irrelevant)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql пълнотекстово търсене не връща очакваните резултати

  2. Какъв тип данни на MySQL трябва да се използва за географска ширина/дължина с 8 знака след десетичната запетая?

  3. MySQL Trigger получава текуща заявка, която е причинила задействане на тригера

  4. Как да импортирате MySQL бази данни в командния ред

  5. heroku rake db:мигрирайте ГРЕШКА gem инсталирайте activerecord-mysql-adapter