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

tampilkan 2 entri terakhir di setiap kategori dari tabel mysql

Jenis hasil ini paling baik ditangani oleh fungsi jendela di RDBMS lain tetapi sayangnya Mysql tidak memiliki fungsi jendela jadi sebagai alternatif ada solusi untuk menggunakan variabel yang ditentukan pengguna untuk menetapkan peringkat untuk baris yang termasuk dalam grup yang sama

SELECT  `id`, `category`, `names`
FROM (
SELECT *,
@r:= CASE WHEN @g = category THEN @r + 1 ELSE 1 END rownum,
@g:=category
FROM test
  CROSS JOIN(SELECT @g:=NULL ,@r:=0) t
  ORDER BY category,id desc
) c
WHERE c.rownum <=2 

Kueri di atas akan memberi Anda 2 catatan terbaru (berdasarkan id) per kategori Anda dapat mengubah bagian terakhir dari kueri dengan klausa where ke nomor apa pun untuk menampilkan n hasil per grup misalnya untuk menampilkan 3 catatan lalu WHERE c.rownum <= 3 dan seterusnya

Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pohon silsilah mysql

  2. python MySQLDb masukkan dengan Pernyataan yang disiapkan

  3. Periksa koneksi database, jika tidak tampilkan pesan

  4. Terlalu banyak koneksi Hibernate dan mysql

  5. Klausa MySQL LIMIT setara untuk SQL SERVER