Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencari Tarikh dan Nilai Log Masuk Terkini untuk Setiap Pengguna dalam SQL?

Bagaimana untuk Mencari Tarikh dan Nilai Log Masuk Terkini untuk Setiap Pengguna dalam SQL?

Susan Sarandon
Lepaskan: 2025-01-15 17:01:47
asal
937 orang telah melayarinya

How to Find the Latest Login Date and Value for Each User in SQL?

Pertanyaan SQL: Dapatkan tarikh dan nilai rekod terakhir setiap pengguna

Rekod log masuk pengguna disimpan dalam pangkalan data dan tugasnya adalah untuk mendapatkan tarikh log masuk terkini dan nilai yang sepadan untuk setiap pengguna yang berbeza. Jadual berikut menunjukkan jadual yang mengandungi data ini, dengan medan termasuk nama pengguna, tarikh dan nilai:

**用户名** **日期** **值**
brad 2010年1月2日 1.1
fred 2010年1月3日 1.0
bob 2009年8月4日 1.5
brad 2010年2月2日 1.2
fred 2009年12月2日 1.3

Pertanyaan SQL untuk mendapatkan semula tarikh dan nilai rekod terkini untuk setiap pengguna

Berikut ialah dua cara untuk mendapatkan semula tarikh dan nilai rekod terkini untuk setiap pengguna:

Kaedah 1: Gunakan sambungan diri

Pendekatan klasik ini menggunakan gabungan sendiri untuk memadankan jadual dengan dirinya sendiri (berdasarkan nama pengguna) dan menggunakan fungsi agregat MAX() untuk mendapatkan tarikh maksimum bagi setiap pengguna:

<code class="language-sql">SELECT t.username, t.date, t.value
FROM MyTable t
INNER JOIN (
    SELECT username, MAX(date) AS MaxDate
    FROM MyTable
    GROUP BY username
) tm ON t.username = tm.username AND t.date = tm.MaxDate;</code>
Salin selepas log masuk

Kaedah 2: Gunakan fungsi tetingkap (jika disokong)

Fungsi tetingkap menyediakan alternatif yang lebih cekap yang mengelakkan masalah rekod pendua yang disebabkan oleh tarikh yang sama. Kaedah ini menggunakan fungsi ROW_NUMBER() untuk beroperasi pada set hasil yang dibahagikan mengikut nama pengguna dan diisih mengikut tarikh dalam tertib menurun:

<code class="language-sql">SELECT x.username, x.date, x.value
FROM (
    SELECT username, date, value,
        ROW_NUMBER() OVER (PARTITION BY username ORDER BY date DESC) AS _rn
    FROM MyTable 
) x
WHERE x._rn = 1;</code>
Salin selepas log masuk

Pertanyaan ini akan menghasilkan keputusan berikut, menunjukkan tarikh dan nilai log masuk terbaharu setiap pengguna:

**用户名** **日期** **值**
brad 2010年2月2日 1.2
fred 2010年1月3日 1.0
bob 2009年8月4日 1.5

Atas ialah kandungan terperinci Bagaimana untuk Mencari Tarikh dan Nilai Log Masuk Terkini untuk Setiap Pengguna dalam SQL?. 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