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

Permintaan untuk menemukan posting dengan kumpulan tag yang tepat (hubungan banyak ke banyak)

Ini adalah masalah pembagian relasional yang tepat.

Di SQL Server, berperforma baik metode (dengan asumsi batasan unik pada post_id,tag ) adalah

SELECT post_id
FROM   post_tags
GROUP  BY post_id
HAVING MIN(CASE
             WHEN Keyword IN ( 'clever', 'interesting' ) THEN 1
             ELSE 0
           END) = 1
       AND SUM(CASE
                 WHEN Keyword IN ( 'clever', 'interesting' ) THEN 1
                 ELSE 0
               END) = 2  

Jadi saya tidak akan mengesampingkan ide untuk menggunakan GROUP_CONCAT di HAVING sebagai gantinya.

HAVING GROUP_CONCAT(DISTINCT Keyword ORDER BY Keyword) = 'clever,interesting'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sintaks MySQL dalam membuat Kunci Asing

  2. Masalah kolom tidak diketahui dengan alias mysql

  3. MySQL - Buat sepasang nilai unik

  4. Mengapa urutan evaluasi untuk ekspresi yang melibatkan variabel pengguna tidak ditentukan?

  5. MySQL dan GROUP_CONCAT() panjang maksimum