Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih Baris dengan Nilai Maksimum daripada Setiap Kumpulan dalam MySQL?

Bagaimana untuk Memilih Baris dengan Nilai Maksimum daripada Setiap Kumpulan dalam MySQL?

Susan Sarandon
Lepaskan: 2024-12-05 01:44:08
asal
851 orang telah melayarinya

How to Select the Row with the Maximum Value from Each Group in MySQL?

Mengumpulkan dan Mengambil Baris Berdasarkan Nilai Maksimum dalam MySQL

Dalam pengurusan pangkalan data, mendapatkan semula baris tertentu daripada kumpulan boleh menjadi penting untuk analisis data dan pelaporan. Dalam MySQL, operasi pengelompokan dan pesanan memainkan peranan penting dalam hal ini. Walau bagaimanapun, cabaran biasa timbul apabila cuba memilih baris dengan nilai tertinggi daripada kumpulan, selepas menggunakan kumpulan mengikut operasi.

Pertimbangkan senario di mana anda mempunyai jadual dengan baris yang mewakili berbilang versi data, dikenal pasti oleh id dan lajur version_id. Matlamatnya adalah untuk mendapatkan semula baris dengan version_id tertinggi bagi setiap id unik.

Walaupun pendekatan intuitif menggunakan kumpulan dengan dengan klausa tertib demi fasal gagal memberikan hasil yang diingini, MySQL menawarkan beberapa penyelesaian yang cekap untuk pertanyaan ini :

Berasaskan Maks Pengumpulan:

SELECT *
FROM (SELECT id, MAX(version_id) AS max_version_id FROM table GROUP BY id) AS subquery
JOIN table ON subquery.id = table.id AND subquery.max_version_id = table.version_id;
Salin selepas log masuk

Pertanyaan ini memanfaatkan subkueri untuk mengira version_id maksimum untuk setiap kumpulan id. Pertanyaan utama kemudian melakukan cantuman dalaman untuk mendapatkan semula baris yang sepadan daripada jadual asal.

Subkueri Berkorelasi:

SELECT t1.*
FROM table AS t1
WHERE t1.version_id = (SELECT MAX(version_id) FROM table WHERE id = t1.id);
Salin selepas log masuk

Pendekatan ini menggunakan subkueri berkorelasi untuk membandingkan version_id setiap baris dengan nilai maksimum dalam kumpulan idnya. Pertanyaan utama hanya memilih baris yang memenuhi syarat.

Fungsi Tetingkap:

SELECT id, MAX(version_id) OVER (PARTITION BY id) AS max_version_id, field1, field2
FROM table
ORDER BY id;
Salin selepas log masuk

Fungsi tetingkap menyediakan pendekatan alternatif dengan mengira version_id maksimum dalam setiap id partition. Klausa OVER menentukan kriteria pembahagian dan klausa ORDER BY memastikan bahawa baris disusun dalam setiap partition.

Penyelesaian ini menawarkan cara yang cekap untuk mendapatkan semula baris dengan version_id tertinggi untuk setiap id yang berbeza. Dengan memahami nuansa operasi pengelompokan dan pesanan, pengguna pangkalan data boleh memperhalusi pertanyaan mereka untuk mengekstrak data yang bermakna daripada struktur data yang kompleks.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris dengan Nilai Maksimum daripada Setiap Kumpulan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan