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

Danh sách thẻ SQL và lọc thẻ

left join các thẻ tags bảng và bao gồm id đang được tìm kiếm trong mệnh đề tham gia và kiểm tra số lượng trong having .

SELECT u.id,u.name,GROUP_CONCAT(ut.tagid) as tags
FROM users u 
LEFT JOIN usertag as ut ON u.id = ut.userid 
LEFT JOIN tags t ON t.id=ut.tagid AND t.ID IN (10,20,30) --change this as needed
GROUP BY u.id,u.name
HAVING COUNT(ut.tagid) >= COUNT(t.id) AND COUNT(t.id) = 3 --change this number to the number of tags

Một tùy chọn khác là sử dụng FIND_IN_SET nếu có giá trị giới hạn. Ví dụ,

SELECT * FROM (
SELECT u.*, GROUP_CONCAT(ut.tagid) as tags 
FROM users as u 
LEFT JOIN usertag as ut ON u.id = ut.userid 
GROUP BY u.id
) T
WHERE FIND_IN_SET('10',tags) > 0 AND FIND_IN_SET('20',tags) > 0



  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 thay đổi mật khẩu gốc mysql

  2. Không thể kết nối với máy chủ MySQL từ xa với lỗi 61

  3. Rails với trong cơ sở dữ liệu bộ nhớ

  4. Cách nhập và xuất cơ sở dữ liệu qua SSH

  5. SQL Injection thành công mặc dù PHP Magic Quotes