Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Nilai Lajur Maksimum dan Data Sepadan dengan Cekap dalam SQL?
Mencari Nilai Maksimum dan Data Berkaitan dengan Cekap dalam SQL
Penganalisis data selalunya perlu mengekstrak nilai tertinggi daripada lajur dan data berkaitan daripada lajur lain dalam jadual. Untuk set data yang besar, kecekapan adalah yang terpenting. Walaupun mengumpulkan mengikut ID dan memilih versi maksimum mungkin kelihatan mudah, pendekatan ini mengetepikan teg yang berkaitan.
Kaedah yang unggul, lebih cekap menggunakan fungsi ROW_NUMBER()
. Pertimbangkan pertanyaan ini:
<code class="language-sql">SELECT s.id, s.tag, s.version FROM ( SELECT t.*, ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY t.version DESC) as rnk FROM YourTable t ) s WHERE s.rnk = 1;</code>
Pertanyaan ini menggunakan ROW_NUMBER()
untuk menetapkan kedudukan kepada setiap baris dalam kumpulan (partition) berdasarkan lajur id
. PARTITION BY t.id
memastikan kedudukan bebas untuk setiap ID unik. ORDER BY t.version DESC
menyusun baris dalam susunan versi menurun, memberikan kedudukan 1 kepada baris dengan versi maksimum untuk setiap ID.
Klausa WHERE
luar menapis hasil, mengekalkan hanya baris dengan kedudukan 1. Ini dengan cekap mendapatkan ID unik, teg sepadannya dan versi maksimum untuk setiap ID. Fungsi ROW_NUMBER()
adalah kunci untuk mengendalikan set data yang besar dengan berkesan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Lajur Maksimum dan Data Sepadan dengan Cekap dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!