Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih Baris Terkini bagi setiap Pengguna dalam Pangkalan Data dengan Cap Masa?

Bagaimana untuk Memilih Baris Terkini bagi setiap Pengguna dalam Pangkalan Data dengan Cap Masa?

Linda Hamilton
Lepaskan: 2025-01-13 13:06:46
asal
496 orang telah melayarinya

How to Select the Most Recent Row per User in a Database with Timestamps?

Mendapatkan Entri Terkini untuk Setiap Pengguna: Penyelesaian Pangkalan Data

Cabaran:

Memilih rekod terbaharu untuk setiap pengguna dengan cekap dalam jadual pangkalan data yang mengandungi cap masa dan bendera status ("masuk" atau "keluar") boleh menjadi rumit, terutamanya apabila pengguna mempunyai berbilang entri yang berkongsi cap masa terkini yang sama.

Pendekatan:

Masalah ini diselesaikan menggunakan dua pertanyaan SQL yang berbeza:

1. Pertanyaan untuk Berbilang Rekod Padanan:

Pertanyaan ini mengenal pasti semua rekod dengan cap masa maksimum untuk setiap pengguna.

<code class="language-sql">SELECT t1.*
FROM lms_attendance t1
WHERE t1.time = (SELECT MAX(t2.time)
                 FROM lms_attendance t2
                 WHERE t2.user = t1.user);</code>
Salin selepas log masuk

Output:

ID USER TIME IO
2 9 1370931664 out
3 6 1370932128 out
5 12 1370933037 in

2. Pertanyaan untuk Rekod Padanan Tunggal:

Pertanyaan ini hanya mengembalikan satu rekod terbaharu bagi setiap pengguna, mengutamakan ID tertinggi dalam kes hubungan cap masa.

<code class="language-sql">SELECT t1.*
FROM lms_attendance t1
WHERE t1.id = (SELECT t2.id
                 FROM lms_attendance t2
                 WHERE t2.user = t1.user
                 ORDER BY t2.time DESC, t2.id DESC
                 LIMIT 1);</code>
Salin selepas log masuk

Output:

ID USER TIME IO
2 9 1370931664 out
3 6 1370932128 out
5 12 1370933037 in

Penjelasan:

  • Pertanyaan pertama menggunakan subkueri berkorelasi untuk mencari cap masa terkini (MAX(time)) untuk setiap pengguna dan kemudian mendapatkan semula semua entri yang sepadan dengan cap masa itu. Ini mengendalikan situasi dengan berbilang rekod yang mempunyai cap masa terkini yang sama.
  • Pertanyaan kedua menggunakan ORDER BY time DESC, id DESC untuk mengutamakan cap masa terkini dan kemudian ID tertinggi, memastikan satu rekod terbaharu yang muktamad dipilih menggunakan LIMIT 1.

Memilih antara pertanyaan ini bergantung pada sama ada anda memerlukan semua rekod dengan cap masa terkini atau hanya satu rekod terbaharu bagi setiap pengguna. Pertanyaan kedua menawarkan penyelesaian yang lebih ringkas apabila hanya satu rekod diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris Terkini bagi setiap Pengguna dalam Pangkalan Data dengan Cap Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan