Mengambil Baris Terakhir untuk Setiap Kumpulan dalam MySQL
Untuk mengumpulkan baris 'terakhir' setiap kumpulan menggunakan 'kumpulan oleh' dalam MySQL , pertimbangkan pendekatan cekap berikut:
Subquery Kaedah:
Satu pendekatan biasa ialah menggunakan subkueri:
select * from foo as a where a.id = (select max(id) from foo where uid = a.uid group by uid) group by uid;
Kaedah Sertai:
Alternatifnya ialah menggunakan gabungan:
SELECT t1.* FROM foo t1 JOIN (SELECT uid, MAX(id) id FROM foo GROUP BY uid) t2 ON t1.id = t2.id AND t1.uid = t2.uid;
KIRI SERTAI Kaedah:
Untuk pendekatan yang lebih bernuansa:
SELECT t1.* FROM foo t1 LEFT JOIN foo t2 ON t1.id < t2.id AND t1.uid = t2.uid WHERE t2.id is NULL;
Membandingkan Pertanyaan
Anda boleh menganalisis kecekapan pertanyaan ini menggunakan EXPLAIN penyata.
Struktur Jadual dan Data:
CREATE TABLE foo ( id INT(10) NOT NULL AUTO_INCREMENT, uid INT(10) NOT NULL, value VARCHAR(50) NOT NULL, PRIMARY KEY (`id`), INDEX `uid` (`uid`) ); id, uid, value 1, 1, hello 2, 2, cheese 3, 2, pickle 4, 1, world
Hasil Jangkaan:
id, uid, value 3, 2, pickle 4, 1, world
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Baris Terakhir dengan Cekap untuk Setiap Kumpulan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!