Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Baris Terkini dengan Cekap untuk Setiap ID dalam PostgreSQL?
Pertimbangkan set data dengan lajur untuk ID, tarikh dan maklumat tambahan:
id date another_info 1 2014-02-01 kjkj 1 2014-03-11 ajskj 1 2014-05-13 kgfd 2 2014-02-01 SADA 3 2014-02-01 sfdg 3 2014-06-12 fdsA
Matlamat kami adalah untuk mendapatkan semula baris terbaharu bagi setiap ID yang berbeza.
Pendekatan paling berkesan dalam PostgreSQL ialah menggunakan operator DISTINCT ON:
SELECT DISTINCT ON (id) id, date, another_info FROM the_table ORDER BY id, date DESC;
Pertanyaan ini mengenal pasti dan mengembalikan hanya baris pertama yang berbeza untuk setiap ID unik, disusun mengikut menurun susunan lajur tarikh.
Untuk penyelesaian merentas pangkalan data, kita boleh memanfaatkan fungsi tetingkap:
SELECT id, date, another_info FROM ( SELECT id, date, another_info, ROW_NUMBER() OVER (PARTITION BY id ORDER BY date DESC) AS rn FROM the_table ) t WHERE rn = 1 ORDER BY id;
Pertanyaan ini mencipta fungsi tetingkap untuk mengira nombor baris bagi setiap ID, disusun mengikut tarikh dalam tertib menurun. Keadaan WHERE rn = 1 menapis baris untuk memasukkan hanya baris kedudukan tertinggi untuk setiap ID dan klausa ORDER BY akhir memastikan keputusan disusun mengikut ID.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Baris Terkini dengan Cekap untuk Setiap ID dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!