Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memilih ID dengan Cekap Tarikh Maksimum untuk Setiap Kategori dalam PostgreSQL Menggunakan DISTINCT ON?

Bagaimanakah Saya Boleh Memilih ID dengan Cekap Tarikh Maksimum untuk Setiap Kategori dalam PostgreSQL Menggunakan DISTINCT ON?

DDD
DDDasal
2024-12-27 17:10:17503semak imbas

How Can I Efficiently Select the ID with the Maximum Date for Each Category in PostgreSQL Using DISTINCT ON?

Menggunakan DISTINCT ON untuk Memilih Id dengan Tarikh Maksimum Dikumpulkan Mengikut Kategori dalam PostgreSQL

Untuk memilih id dengan tarikh maksimum dalam setiap kategori, Postgres menawarkan ciri hebat yang dipanggil DISTINCT ON. Di bawah 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;

DISTINCT ON membezakan baris berdasarkan lajur yang ditentukan dan baris berikutnya ditapis berdasarkan susunan isihan. Dengan menyusun baris dalam susunan tarikh menurun dalam setiap kategori, DISTINCT ON menyediakan tarikh maksimum untuk setiap kategori.

Awas: Pastikan lajur tarikh bukan NULL, kerana nilai NULL boleh mempengaruhi susunan isihan. Jika perlu, anda boleh menambah NULLS LAST untuk mengendalikan nilai NULL.

DISTINCT ON menawarkan kesederhanaan dan kecekapan. Prestasinya amat berkesan untuk set data yang lebih kecil. Untuk set data yang lebih besar dengan banyak baris bagi setiap kategori, pendekatan alternatif mungkin lebih sesuai, seperti yang disebut di bawah bahagian "Soalan Limpahan Tindanan Berkaitan".

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memilih ID dengan Cekap Tarikh Maksimum untuk Setiap Kategori dalam PostgreSQL Menggunakan DISTINCT ON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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