Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL - chọn tất cả các mục có nhiều thẻ bắt đầu bằng #

bạn cũng biết danh sách của mình, vì vậy đó là một chuỗi đơn giản. và bạn biết số lượng của bạn. chúng có thể bị kẹt vào một mysql Prepared Statement và được thực thi.

Nhưng bên dưới nó là danh sách và số lượng được đưa vào chỉ cho mục đích demo.

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. cách tạo select lồng nhau trên zend db

  2. Vấn đề múi giờ Dấu thời gian trong Java MySQL

  3. jetty-env.xml với DataSource dẫn đến lỗi WebAppContext trên mvn jetty:run

  4. Làm thế nào để chọn tất cả các bản ghi có thời gian 10 phút trong dấu thời gian hiện tại trong MySQL?

  5. Bắt một nhóm MySQL theo truy vấn để hiển thị hàng trong nhóm đó có giá trị cao nhất