Masalah:
Diberikan jadual dengan lajur pid, cap waktu , kos dan menghapuskan, tugasnya adalah untuk mendapatkan semula pid baris terkini untuk setiap unik rid, memandangkan pid ialah kunci utama autokenaikan.
Pertanyaan Asal:
Pertanyaan berikut mendapatkan cap masa maksimum dan nilai penyingkiran yang sepadan, tetapi ia tidak mengembalikan yang terkini dengan betul pid:
SELECT MAX(timestamp), rid, pid FROM theTable GROUP BY rid
Penyelesaian:
Untuk mendapatkan pid terkini secara berkesan bagi setiap rid, gabungan teknik diperlukan:
Kenal pasti cap masa maksimum dan penyingkiran yang sepadan nilai:
SELECT rid, MAX(timestamp) AS maxt FROM theTable GROUP BY rid
Sertai jadual asal berbanding hasil cap masa maksimum:
SELECT t.pid, t.cost, t.timestamp, t.rid FROM theTable AS t JOIN (SELECT rid, MAX(timestamp) AS maxt FROM theTable GROUP BY rid) AS maxt ON t.rid = maxt.rid AND t.timestamp = maxt.maxt
Pertanyaan yang disemak ini berkesan mendapatkan semula pid, kos, cap masa dan menyingkirkan baris terkini untuk setiap unik buang dalam jadual asal.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan `pid` Terkini dengan Cekap untuk Setiap `rid` Unik Menggunakan `MAX()` MySQL dan `GROUP BY`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!