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

MySql Query:Pilih 3 baris teratas dari tabel untuk setiap kategori

LIMIT hanya menghentikan jumlah hasil yang dikembalikan oleh pernyataan. Apa yang Anda cari umumnya disebut fungsi analitik/windowing/peringkat - yang tidak didukung MySQL tetapi Anda dapat meniru menggunakan variabel:

SELECT x.*
  FROM (SELECT t.*,
               CASE 
                 WHEN @category != t.category THEN @rownum := 1 
                 ELSE @rownum := @rownum + 1 
               END AS rank,
               @category := t.category AS var_category
          FROM TBL_ARTIKUJT t
          JOIN (SELECT @rownum := NULL, @category := '') r
      ORDER BY t.category) x
 WHERE x.rank <= 3

Jika Anda tidak mengubah SELECT x.* , kumpulan hasil akan menyertakan rank dan var_category nilai - Anda harus menentukan kolom yang benar-benar Anda inginkan jika tidak demikian.



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

  2. ATAS dan ORDER BY kesalahan sql

  3. Bagaimana cara mengembalikan id pada Sisipan dengan mybatis di mysql dengan anotasi

  4. Gabungkan hasil dari dua kueri yang tidak terkait menjadi satu tampilan

  5. Ubah set karakter default MySQL ke UTF-8 di my.cnf?