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;
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);
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;
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!