Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Rekod Terkini untuk Setiap Gabungan Kaedah dan ID dalam MySQL?

Bagaimana untuk Memilih Rekod Terkini untuk Setiap Gabungan Kaedah dan ID dalam MySQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-18 18:40:19281semak imbas

How to Select the Latest Records for Each Method and ID Combination in MySQL?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn