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

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

DDD
Lepaskan: 2025-01-02 19:40:39
asal
453 orang telah melayarinya

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

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

Matlamat kami adalah untuk mendapatkan semula baris terbaharu bagi setiap ID yang berbeza.

Menggunakan Distinct On Operator

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

Pertanyaan ini mengenal pasti dan mengembalikan hanya baris pertama yang berbeza untuk setiap ID unik, disusun mengikut menurun susunan lajur tarikh.

Menggunakan Fungsi Tetingkap

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan