Soalan:
Dengan mengandaikan jadual pangkalan data mengandungi maklumat log masuk pengguna, bagaimanakah kita boleh mendapatkan tarikh log masuk terakhir untuk setiap pengguna? Pertimbangkan kemungkinan tarikh log masuk pendua.
Penyelesaian:
Terdapat dua cara biasa untuk menyelesaikan masalah ini:
Kaedah 1: Menggunakan subquery INNER JOIN
Kaedah ini menggunakan subkueri untuk mengenal pasti tarikh log masuk terakhir setiap pengguna, yang kemudiannya digunakan untuk menapis jadual utama:
<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>
Kaedah 2: Fungsi tetingkap
Untuk pangkalan data yang menyokong fungsi tetingkap, kaedah yang lebih cekap boleh digunakan:
<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>
Kaedah ini menggunakan pengisihan nombor baris pada data yang dipartisi, di mana tarikh terakhir setiap pengguna diberikan kedudukan 1.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Tarikh Log Masuk Terkini untuk Setiap Pengguna dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!