Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Baris Terakhir untuk Setiap ID Unik dalam PostgreSQL?

Bagaimana untuk Mendapatkan Baris Terakhir untuk Setiap ID Unik dalam PostgreSQL?

Mary-Kate Olsen
Lepaskan: 2025-01-01 09:06:11
asal
190 orang telah melayarinya

How to Retrieve the Last Row for Each Unique ID in PostgreSQL?

Mengambil Baris Terakhir untuk Setiap ID dalam PostgreSQL

Apabila bekerja dengan data, selalunya perlu untuk mengekstrak maklumat khusus daripada pelbagai set data. Dalam kes PostgreSQL, pengguna mungkin menghadapi senario di mana mereka perlu mendapatkan rekod terkini untuk setiap ID unik.

Senario

Pertimbangkan jadual berikut:

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

Objektif

Matlamatnya ialah untuk mengekstrak baris terakhir data bagi setiap ID unik dalam jadual:

id date another_info
1 2014-05-13 kgfd
2 2014-02-01 SADA
3 2014-06-12 fdsA

Penyelesaian 1: Menggunakan Operator DISTINCT ON Postgres

Operator DISTINCT ON Postgres dengan cekap mengendalikan senario ini:

select distinct on (id) id, date, another_info
from the_table
order by id, date desc;
Salin selepas log masuk

Penyelesaian 2: Menggunakan Fungsi Tetingkap

Untuk keserasian merentas pangkalan data, fungsi tetingkap seperti row_number() boleh digunakan:

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;
Salin selepas log masuk

Tanda aras biasanya menunjukkan bahawa pendekatan fungsi tetingkap adalah lebih pantas daripada sub-pertanyaan.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Baris Terakhir untuk Setiap ID Unik dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan