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

Truy vấn MySQL để tìm kiếm các mục có các thẻ nhất định

nếu bạn muốn mục có bất kỳ thẻ nào trong hai thẻ thì:

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

nếu bạn muốn mặt hàng có cả hai thẻ thì:

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

dựa trên nhận xét của bạn

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

Truy vấn này cung cấp id và mục từ bảng mục. Nó cung cấp cho mặt hàng có cả thẻ màu vàng và trái cây. và các mục chỉ có thẻ màu đỏ.

nếu bạn muốn nhận các mục có hai thẻ và chỉ có hai thẻ thì hãy sử dụng điều kiện sau trong mệnh đề có

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


  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:Mở rộng phạm vi ngày thành các hàng mới

  2. Liên kết bảng HTML với bảng MySQL

  3. Lưu trữ nhiều địa chỉ email trong cơ sở dữ liệu cho các kiểu người dùng khác nhau

  4. MySQL để điền vào các ngày còn thiếu khi sử dụng GROUP BY DATE (table.timestamp) mà không cần tham gia vào bảng tạm thời

  5. CHIỀU DÀI MYSQL CONCAT MAX