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

mysql pilih inner join dengan limit

Anda dapat menggunakan kueri peringkat mysql tidak memiliki fungsi jendela untuk jenis hasil ini untuk mendapatkan n catatan per grup, saya tidak akan menyarankan group_concat solusi karena sebagai articles istilah mengatakan bahwa mungkin ada data yang cukup dan dengan mudah melewati batasan batas 1024 karakter jika Anda meningkatkan batas ini juga memiliki ketergantungan pada max_allowed_packet juga

SELECT * FROM (
SELECT *,
@r:= CASE WHEN @g = c.id THEN @r +1 ELSE 1 END rownum,
@g:= c.id catgroup
 FROM category c
 JOIN articles a ON (c.id = a,category_id)
CROSS JOIN (SELECT @g:=0,@r:=0) t2
ORDER BY c.id , a.`date` desc
) t
 WHERE rownum <= 5

Di atas akan memberi peringkat setiap artikel di dalam grup kategorinya, Anda dapat melihat hasil rownum alias dan di outer query cukup filter hasil artikel menjadi 5 per grup kategori



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan 'berbeda' dalam kueri MySQL

  2. Saya tidak tahu cara memperbarui waktu masuk terakhir saya

  3. transpos kolom ke baris

  4. Isi otomatis kotak teks tergantung pada nilai Drop Down

  5. mysql - alias kolom dinamis