Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Rekod Aktiviti Pengguna Terkini dengan Cekap dengan SQL?
Gunakan SQL untuk mendapatkan rekod aktiviti pengguna terkini dengan cekap
Artikel ini meneroka cara untuk menanyakan pangkalan data melalui SQL untuk mendapatkan tarikh rekod aktiviti terkini setiap pengguna.
Andaikan kami mempunyai jadual pangkalan data yang merekodkan peristiwa log masuk pengguna:
用户名 | 日期 | 数值 |
---|---|---|
brad | 2010-01-02 | 1.1 |
fred | 2010-01-03 | 1.0 |
bob | 2009-08-04 | 1.5 |
brad | 2010-02-02 | 1.2 |
fred | 2009-12-02 | 1.3 |
Kaedah mudah:
Pendekatan mudah ialah menggunakan gabungan dalaman untuk memadankan nama pengguna dan tarikh terkini:
<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>
Walau bagaimanapun, pendekatan ini mungkin mengalami rekod pendua dengan tarikh yang sama.
Gunakan fungsi tetingkap:
Untuk menyelesaikan masalah rekod pendua, anda boleh menggunakan fungsi tetingkap:
<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>
Pertanyaan ini menggunakan pembahagian baris dan fungsi ROW_NUMBER() untuk menetapkan kedudukan kepada setiap rekod bagi setiap pengguna, dengan kedudukan tertinggi menunjukkan rekod terkini. Klausa WHERE memastikan bahawa hanya rekod dengan kedudukan 1, yang mewakili aktiviti terbaharu untuk setiap pengguna, dipilih.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Aktiviti Pengguna Terkini dengan Cekap dengan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!