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

SQL SELECT với mối quan hệ m:n

SELECT  u.*
FROM    (
        SELECT  user_id
        FROM    tag t
        JOIN    user_has_tag uht
        ON      uht.tag_id = t.id
        WHERE   tag_name IN ('apple', 'orange', 'banana')
        GROUP BY
                user_id
        HAVING  COUNT(*) = 3
        ) q
JOIN    user u
ON      u.id = q.user_id

Bằng cách xóa HAVING COUNT(*) , bạn nhận được OR thay vì AND (mặc dù nó sẽ không phải là cách hiệu quả nhất)

Bằng cách thay thế 3 với 2 , bạn có được những người dùng có chính xác hai trong ba thẻ được xác định.

Bằng cách thay thế = 3 với >= 2 , bạn có được những người dùng có ít nhất hai trong ba thẻ được xác định.



  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 Chọn cột cụ thể

  2. Ví dụ YEAR () - MySQL

  3. Tham gia hai bảng mysql

  4. Hiệu suất của các truy vấn LIKE trên bảng hàng multmillion, MySQL

  5. Lưu dữ liệu bằng tiếng Ả Rập trong cơ sở dữ liệu MySQL