selepas kumpulan pangkalan data, dapatkan rekod n sebelumnya bagi setiap kumpulan
Data pangkalan data anda dianjurkan oleh pengelompokan, dan anda perlu mengekstrak rekod N pertama setiap kumpulan. Atas sebab ini, anda boleh menggunakan strategi berikut:
Kesatuan Semua Kaedah:
Gunakan kesatuan semua simbol pengkomputeran untuk menggabungkan rekod N pertama setiap kumpulan. Sebagai contoh, jika anda mempunyai dua kumpulan dan ingin mengambil dua rekod pertama untuk setiap kumpulan, anda boleh menggunakan:
Kaedah nombor cincin:
<code class="language-sql">( SELECT * FROM mytable WHERE `group` = 1 ORDER BY age DESC LIMIT 2 ) UNION ALL ( SELECT * FROM mytable WHERE `group` = 2 ORDER BY age DESC LIMIT 2 )</code>
pertanyaan ini memperuntukkan nombor baris untuk setiap rekod dalam kumpulannya. Kemudian, anda boleh menapis hasilnya dengan hanya pengambilan nombor baris kurang daripada atau sama dengan N:
Kaedah lain:
<code class="language-sql">SELECT person, `group`, age, (@num:=IF(@group = `group`, @num +1, IF(@group := `group`, 1, 1))) row_number FROM test t CROSS JOIN (SELECT @num:=0, @group:=NULL) c ORDER BY `Group`, Age DESC, person</code>
artikel XAPRB yang disebutkan dalam artikel ini menyediakan kaedah lain untuk mencapai hasil ini, termasuk:
<code class="language-sql">SELECT person, `group`, age FROM ( ... (上述查询) ... ) AS x WHERE x.row_number <= N</code>
Gunakan Sub -Query atau pertanyaan kanak -kanak yang berkaitan
Gunakan Prosedur PenyimpananGunakan fungsi tetingkap (untuk pangkalan data yang disokong)
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan rekod N atas untuk setiap kumpulan dalam pangkalan data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!