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

Daftar tag SQL dan pemfilteran tag

left join tags tabel dan sertakan id yang sedang dicari dalam klausa gabung dan periksa jumlah di 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

Satu opsi lagi adalah menggunakan FIND_IN_SET jika ada nilai terbatas. Misalnya,

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. Mengapa sintaks yang diberikan valid di mysql?

  2. Bagaimana Fungsi MATCH() Bekerja di MySQL

  3. Menggunakan MariaDB dengan Entity Framework

  4. Bagaimana menginstal dan mengkonfigurasi mysql 5.6.16 di windows 7

  5. Kursor prosedur tersimpan MySQL untuk pernyataan yang disiapkan