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

Bagaimana untuk Mendapatkan Baris Terakhir dengan Cekap untuk Setiap ID dalam PostgreSQL?

Susan Sarandon
Lepaskan: 2024-12-28 17:09:11
asal
390 orang telah melayarinya

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

PostgreSQL: Mendapatkan semula Baris Terakhir untuk Setiap ID

Masalah:

Memandangkan data berikut, anda ingin mengekstrak rekod terakhir untuk setiap ID unik:

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

Diingini Keputusan:

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

Penyelesaian:

Terdapat dua kaedah yang cekap untuk mencapai ini dalam PostgreSQL:

Kaedah 1 : Menggunakan Operator DISTINCT ON

Postgres menyediakan Operator DISTINCT ON, yang membolehkan anda memilih baris yang berbeza berdasarkan satu atau lebih lajur dan kemudian menggunakan operasi lain. Untuk senario ini, anda boleh menggunakan:

SELECT DISTINCT ON (id) id, date, another_info
FROM the_table
ORDER BY id, date DESC;
Salin selepas log masuk

Kaedah 2: Menggunakan Fungsi Tetingkap

Fungsi tetingkap membenarkan anda melakukan pengagregatan atau pengiraan ke atas satu set baris yang boleh ditakrifkan secara dinamik. Anda boleh menggunakan fungsi tetingkap yang dipanggil ROW_NUMBER() untuk menetapkan pangkat kepada setiap baris dalam setiap kumpulan ID dan memilih baris dengan pangkat tertinggi:

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

Penyelesaian menggunakan fungsi tetingkap biasanya lebih cepat daripada menggunakan subquery.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Baris Terakhir dengan Cekap untuk Setiap ID 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