Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL SELECT dengan hubungan 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

Dengan menghapus HAVING COUNT(*) , Anda mendapatkan OR bukannya AND (meskipun itu bukan cara yang paling efisien)

Dengan mengganti 3 dengan 2 , Anda mendapatkan pengguna yang memiliki tepat dua dari tiga tag yang ditentukan.

Dengan mengganti = 3 dengan >= 2 , Anda mendapatkan pengguna yang memiliki setidaknya dua dari tiga tag yang ditentukan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cluster Nodejs dengan koneksi MySQL

  2. Membangun kembali Budak Replikasi MySQL 8.0 Menggunakan Plugin Klon

  3. Setara dengan RowID Oracle di MySQL

  4. Masalah dengan karakter UTF-8; apa yang saya lihat bukan apa yang saya simpan

  5. chaining bergabung kembali ke tabel target