Cara Mengambil Rekod Bertarikh Terkini daripada Jadual MySQL
Apabila menyimpan data sensitif masa dalam jadual MySQL, selalunya perlu untuk dapatkan semula rekod terkini untuk gabungan medan tertentu. Contoh berikut menunjukkan cara untuk mencapai ini apabila berurusan dengan jadual respons RPC yang menampilkan medan seperti cap masa, kaedah dan ID.
Soalan
Pertimbangkan jadual bernama rpc_responses dengan struktur berikut:
CREATE TABLE rpc_responses ( timestamp DATE, method VARCHAR, id VARCHAR, response MEDIUMTEXT, PRIMARY KEY (timestamp, method, id) );
Memandangkan perkara berikut data:
timestamp | method | id | response |
---|---|---|---|
2009-01-10 | getThud | 16 | "....." |
2009-01-10 | getFoo | 12 | "....." |
2009-01-10 | getBar | 12 | "....." |
2009-01-11 | getFoo | 12 | "....." |
2009-01-11 | getBar | 16 | "....." |
Keputusan yang Diingini
Dapatkan senarai jawapan terkini untuk semua gabungan kaedah dan id sedia ada:
timestamp | method | id | response |
---|---|---|---|
2009-01-10 | getThud | 16 | "....." |
2009-01-10 | getBar | 12 | "....." |
2009-01-11 | getFoo | 12 | "....." |
2009-01-11 | getBar | 16 | "....." |
Jawapan
Untuk mencapai ini, gunakan perkara berikut pertanyaan:
SELECT * FROM ( SELECT *, IF(@last_method = method, 0, 1) AS new_method_group, @last_method := method FROM rpc_responses ORDER BY method, timestamp DESC ) AS t1 WHERE new_method_group = 1;
Pertanyaan ini dengan cekap mendapatkan semula hasil yang diingini tanpa memerlukan gabungan. Ia juga mengekalkan struktur baris yang diingini, menyediakan rekod yang berbeza untuk setiap gabungan unik kaedah dan id.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Rekod Terkini untuk Setiap Gabungan Kaedah dan ID dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!