Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Rekod N Teratas untuk Setiap Pengguna dalam Access SQL?
Akses SQL: Mengekstrak Rekod N Teratas bagi setiap Pengguna
Panduan ini menunjukkan cara untuk mendapatkan semula tiga rekod terbaharu teratas untuk setiap pengguna dalam pangkalan data Access menggunakan satu pertanyaan SQL. Kami akan memanfaatkan pertanyaan bersarang untuk tugasan ini.
Struktur Pangkalan Data
Pangkalan data kami terdiri daripada dua jadual:
LoginID
, Forename
, Surname
, DOB
, Guardian Forename
, Guardian Surname
, Telephone Number
ProgressID
, LoginID
, Score
, Date Taken
Penyelesaian: Pertanyaan Bersarang
Pendekatan mudah menggunakan TOP N
dalam satu pertanyaan tidak disokong secara langsung dalam Access SQL untuk keperluan khusus ini (mendapatkan semula N teratas untuk setiap kumpulan). Sebaliknya, kami akan menggunakan subkueri untuk mencapai ini:
Pertanyaan dalaman mengenal pasti tiga nilai Date Taken
teratas untuk setiap LoginID
:
<code class="language-sql">SELECT TOP 3 PR2.[Date Taken] FROM Progress AS PR2 WHERE PR2.LoginID = PR1.LoginID ORDER BY PR2.[Date Taken] DESC</code>
Set hasil ini kemudiannya digunakan dalam klausa IN
pertanyaan luar untuk menapis jadual Progress
:
<code class="language-sql">SELECT PR1.LoginID, PR1.Score, PR1.[Date Taken] FROM Progress AS PR1 WHERE PR1.[Date Taken] IN ( SELECT TOP 3 PR2.[Date Taken] FROM Progress AS PR2 WHERE PR2.LoginID = PR1.LoginID ORDER BY PR2.[Date Taken] DESC ) ORDER BY PR1.LoginID, PR1.[Date Taken] DESC;</code>
Pertanyaan akhir ini dengan cekap mengembalikan tiga rekod terbaharu untuk setiap LoginID
, disusun dengan kemas oleh LoginID
dan kemudian oleh Date Taken
dalam susunan menurun (terbaru dahulu). Ini mengelakkan pengehadan penggunaan terus TOP N
pada data terkumpul dalam Access SQL.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod N Teratas untuk Setiap Pengguna dalam Access SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!