Ia selalunya diperlukan dalam pangkalan data untuk mengekstrak bilangan baris yang terhad daripada kumpulan tertentu. Dalam PostgreSQL, keperluan ini boleh dipenuhi menggunakan klausa LIMIT bersama-sama dengan operasi kumpulan.
Contoh berikut menunjukkan keperluan untuk mendapatkan semula dua baris pertama (diisih mengikut lajur nama) dalam setiap kumpulan section_id. Contohnya, daripada jadual yang diberikan:
<code> id | section_id | name ----+------------+------ 1 | 1 | A 2 | 1 | B 3 | 1 | C 4 | 1 | D 5 | 2 | E 6 | 2 | F 7 | 3 | G 8 | 2 | H</code>
Kami mahu mencapai keputusan berikut:
<code> id | section_id | name ----+------------+------ 1 | 1 | A 2 | 1 | B 5 | 2 | E 6 | 2 | F 7 | 3 | G</code>
Dalam versi PostgreSQL sebelum 8.4, terdapat kekurangan fungsi terbina dalam untuk mengendalikan pertanyaan sedemikian dengan cekap. Walau bagaimanapun, dalam PostgreSQL 8.4 dan lebih baru, penyelesaian baharu telah muncul:
<code class="language-sql">SELECT * FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) AS r, t.* FROM xxx t ) x WHERE x.r <= 2;</code>
Penyelesaian ini menggunakan fungsi tetingkap ROW_NUMBER() untuk memberikan nombor urutan kepada setiap baris dalam setiap partition section_id. Klausa ORDER BY menentukan kriteria pengisihan (nama dalam kes ini). Syarat LIMIT 2 kemudiannya digunakan pada subkueri, mengehadkan keputusan kepada dua baris pertama setiap kumpulan (diisih mengikut nama ).
Atas ialah kandungan terperinci Bagaimana untuk Mengehadkan Baris Dalam Setiap Kumpulan dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!