Rumah >pangkalan data >tutorial mysql >Bagaimana untuk memilih hanya baris dengan nilai maksimum dalam lajur SQL?

Bagaimana untuk memilih hanya baris dengan nilai maksimum dalam lajur SQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-25 21:07:10881semak imbas

How to Select Only Rows with the Maximum Value in a SQL Column?

SQL: Pilih baris dengan nilai maksimum dalam lajur

Pertimbangkan jadual dokumen ringkas dengan id lajur, ulasan dan kandungan. Untuk menapis jadual dan mendapatkan semula baris yang mengandungi nilai rev maksimum bagi setiap id, anda boleh menggunakan fungsi SQL MAX() dan GROUP BY.

Gunakan GROUP BY untuk mengekstrak nilai maksimum

<code class="language-sql">SELECT id, MAX(rev)
FROM YourTable
GROUP BY id;</code>

Walau bagaimanapun, untuk mendapatkan keseluruhan baris data yang mengandungi nilai rev maksimum bagi setiap id, anda boleh melakukan dua perkara:

Kaedah 1: Sertai dengan subkueri maksimum

<code class="language-sql">SELECT a.id, a.rev, a.contents
FROM YourTable a
INNER JOIN (
    SELECT id, MAX(rev) rev
    FROM YourTable
    GROUP BY id
) b ON a.id = b.id AND a.rev = b.rev;</code>

Kaedah 2: Gunakan syarat sendiri untuk menyertai kiri

<code class="language-sql">SELECT a.*
FROM YourTable a
LEFT OUTER JOIN YourTable b
    ON a.id = b.id AND a.rev < b.rev
WHERE b.id IS NULL;</code>

Kedua-dua kaedah menggunakan cantuman kiri dan syarat penapis untuk mendapatkan hanya baris dengan nilai rev terbesar bagi setiap id. Kaedah kedua meninggalkan-menyertai jadual kepada dirinya sendiri, menggunakan syarat cantum untuk mengecualikan baris pendua dengan nilai putaran terbesar.

Nota Prestasi

Prestasi kaedah ini mungkin berbeza-beza berdasarkan faktor seperti jenis pangkalan data, saiz jadual dan penggunaan indeks. Adalah disyorkan untuk menanda aras kedua-dua pendekatan untuk menentukan penyelesaian terbaik untuk senario khusus anda.

Atas ialah kandungan terperinci Bagaimana untuk memilih hanya baris dengan nilai maksimum dalam lajur 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