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.
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 |
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 |
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;
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;
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!