Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Nilai Lajur Maksimum dan Data Sepadan dengan Cekap dalam SQL?

Bagaimana untuk Mendapatkan Nilai Lajur Maksimum dan Data Sepadan dengan Cekap dalam SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-07 17:11:42227semak imbas

How to Efficiently Retrieve Maximum Column Values and Corresponding Data in 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!

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