Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Kembali Baris Terkini dengan Cekap untuk ID Yang Diberikan Berdasarkan Cap Masa?
Mendapatkan semula Baris Terkini untuk ID Tertentu
Dalam jadual yang mengandungi berbilang baris dengan ID yang sama, bagaimana anda boleh mengekstrak dengan cekap hanya baris terbaharu berdasarkan cap masa? Pertimbangkan jadual contoh:
| id | signin | signout | +----+---------------------+---------+ | 1 | 2011-12-12 09:27:24 | NULL | | 1 | 2011-12-13 09:27:31 | NULL | | 1 | 2011-12-14 09:27:34 | NULL | | 2 | 2011-12-14 09:28:21 | NULL | +----+---------------------+---------+
Untuk mencapai matlamat ini, anda boleh menggunakan fungsi agregat dan subkueri.
Menggunakan Aggregate MAX()
The fungsi MAX() agregat boleh digunakan untuk menentukan cap masa log masuk terkini untuk setiap ID. Dengan mengumpulkan hasil mengikut lajur id, anda boleh mengenal pasti cap masa log masuk maksimum untuk setiap ID unik.
SELECT id, MAX(signin) AS most_recent_signin FROM tbl GROUP BY id
Mendapatkan Kembali Baris Lengkap
Untuk mendapatkan semula keseluruhan baris yang sepadan dengan log masuk terbaharu untuk ID tertentu, gunakan INNER JOIN terhadap subkueri yang mengembalikan cap masa log masuk maksimum setiap ID.
SELECT tbl.id, signin, signout FROM tbl INNER JOIN ( SELECT id, MAX(signin) AS maxsign FROM tbl GROUP BY id ) ms ON tbl.id = ms.id AND signin = maxsign WHERE tbl.id=1
Pertanyaan ini akan mengembalikan rekod terkini yang lengkap dengan>
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali Baris Terkini dengan Cekap untuk ID Yang Diberikan Berdasarkan Cap Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!