Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Kembali Baris Terkini dengan Cekap untuk ID Yang Diberikan Berdasarkan Cap Masa?

Bagaimana untuk Mendapatkan Kembali Baris Terkini dengan Cekap untuk ID Yang Diberikan Berdasarkan Cap Masa?

Barbara Streisand
Barbara Streisandasal
2025-01-01 10:37:16548semak imbas

How to Efficiently Retrieve the Latest Row for a Given ID Based on Timestamps?

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!

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