Untuk menentukan id dengan tarikh maksimum bagi setiap kategori dalam jadual, PostgreSQL menawarkan pendekatan yang sesuai. Mari kita pertimbangkan data sampel:
id | category | date |
---|---|---|
1 | a | 2013-01-01 |
2 | b | 2013-01-03 |
3 | c | 2013-01-02 |
4 | a | 2013-01-02 |
5 | b | 2013-01-02 |
6 | c | 2013-01-03 |
7 | a | 2013-01-03 |
8 | b | 2013-01-01 |
9 | c | 2013-01-01 |
Untuk mencapai hasil yang diinginkan, kita boleh menggunakan klausa DISTINCT ON PostgreSQL. Klausa ini membolehkan kami memilih baris unik berdasarkan ungkapan tertentu, mengumpulkan hasil mengikut lajur lain. Dalam kes ini, kami akan mengumpulkan baris mengikut kategori dan memilih id yang berbeza dengan tarikh maksimum dalam setiap kumpulan.
Berikut ialah pertanyaan untuk mencapai ini:
SELECT DISTINCT ON (category) id -- , category, date -- any other column (expression) from the same row FROM tbl ORDER BY category, date DESC;
Klausa DISTINCT ON memastikan bahawa hanya kejadian pertama bagi setiap nilai kategori berbeza dipilih. Klausa ORDER BY mengisih hasil terlebih dahulu mengikut kategori dalam tertib menaik (tertib abjad) dan kemudian mengikut tarikh dalam tertib menurun. Susunan ini memastikan bahawa baris dengan tarikh terkini untuk setiap kategori muncul dahulu.
Melaksanakan pertanyaan ini akan menghasilkan hasil berikut:
id |
---|
7 |
2 |
6 |
ID ini (7, 2, 6) mewakili tarikh maksimum untuk kategori a, b dan c, masing-masing.
Atas ialah kandungan terperinci Bagaimana untuk Mencari ID dengan Tarikh Maksimum untuk Setiap Kategori dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!