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

Mysql truy vấn mối quan hệ nhiều đến nhiều. Làm thế nào để lấy tất cả các thẻ của các bài viết đã lọc?

Chà, đây là điều tốt nhất tôi có thể nghĩ đến vào lúc 4:30 sáng:

SELECT distinct tag_id FROM
    (SELECT pt1.post_id FROM pt1
    INNER JOIN tags t1 ON (pt1.tag_id = t1.id)
    WHERE t1.id IN (1, 2)
    GROUP BY pt1.post_id
    HAVING COUNT(DISTINCT t1.id) = 2) MatchingPosts
INNER JOIN pt2 ON (MatchingPosts.post_id = pt2.post_id)
WHERE (pt2.tag_id NOT IN (1, 2))

(1, 2) là các thẻ bạn đang tìm kiếm và tất nhiên, số lượng sẽ phải khớp với số lượng thẻ bạn đang sử dụng để lọc.

Đây là ví dụ (Lưu ý rằng tôi đã thay đổi một chút dữ liệu)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể kết nối với cơ sở dữ liệu bên ngoài từ bên trong kubernetes pod

  2. biến pdo không được xác định trong hàm mysql

  3. MySQL INSERT hoặc REPLACE Commands

  4. Cảnh báo trình liên kết trong khi xây dựng ứng dụng chống lại API mysql-connector-c / libmysqlclient / mysql C

  5. Tạo bảng và sự cố với khóa chính trong Rails