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

Mysql memilih (n) baris dari setiap kejadian

Apa yang Anda coba lakukan adalah memilih sejumlah catatan per grup. Ini dapat dilakukan dengan menggunakan variabel dalam kueri Anda yang mirip dengan ini:

select *
from
(
    SELECT sid, 
        state, 
        votes,
        @prev := @curr,
        @curr := state,
        @rank := IF(@prev = @curr, @rank+1, 1) AS rank
    FROM
    (
      select t1.sid, state, votes
      FROM table1 t1
      INNER JOIN table2 t2
          ON t1.sid=t2.sid
    ) src, (SELECT @curr := null, @prev := null, @rank := 1) r
    ORDER BY state, votes desc
) src
where rank <= 2
order by state, votes;

Lihat SQL Fiddle dengan Demo

Ada cara lain untuk melakukan ini yang diuraikan di sini:

Menggunakan BATAS dalam GROUP BY untuk mendapatkan N hasil per grup?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL:Metode SELECT - tetapi jangan tampilkan duplikat/GROUP atau DISTINCT?

  2. dapatkan kesalahan .findOrCreate()

  3. Ditemukan:sedikit, diharapkan:boolean setelah pemutakhiran Hibernate 4

  4. Karakter UTF8 tidak ditampilkan dengan benar dengan tabel data dan yadcf

  5. Masalah dengan JPA, EclipseLink, dan mysql case sensitif