Dengan Cekap Mendapatkan Tiga Rekod Terbaru bagi setiap Kumpulan Pengguna dalam Access SQL
Pengurusan pangkalan data selalunya melibatkan pengambilan semula subset data tertentu. Dalam senario seperti menjejak markah ujian, anda mungkin perlu mengekstrak tiga entri terbaharu untuk setiap pengguna individu. Tugasan ini, walaupun kelihatan mudah, memerlukan pertanyaan SQL yang canggih untuk menggabungkan pemilihan rekod terkini dengan pengumpulan data mengikut pengguna.
Pertanyaan SQL berikut menyediakan penyelesaian:
<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 PR2 WHERE PR2.LoginID = PR1.LoginID ORDER BY PR2.[Date Taken] DESC ) ORDER BY LoginID, [Date Taken] DESC;</code>
Pecahan Pertanyaan:
Pertanyaan ini menggunakan subkueri (pertanyaan dalaman) dalam pertanyaan utama (pertanyaan luar) untuk mencapai hasil yang diingini.
Subquery: Pertanyaan bersarang ini mengenal pasti tiga nilai "Tarikh Diambil" terbaharu untuk setiap LoginID
unik. Ia melakukan ini dengan:
[Date Taken]
teratas.Progress
(PR2
) untuk hanya memasukkan rekod yang sepadan dengan LoginID
daripada pertanyaan luar (PR1.LoginID
).[Date Taken]
untuk memastikan tarikh terkini diutamakan.Pertanyaan Utama: Pertanyaan utama kemudian menapis jadual Progress
(PR1
) menggunakan operator IN
. Operator ini memastikan bahawa hanya rekod yang nilai [Date Taken]
nya terdapat dalam set hasil subkueri (iaitu, tiga tarikh terbaharu untuk pengguna itu) disertakan. Akhirnya, keputusan disusun mengikut LoginID
dan kemudian dengan [Date Taken]
(menurun) untuk kebolehbacaan mudah.
Pendekatan ini dengan cekap mendapatkan semula tiga markah terbaharu untuk setiap pengguna, mengendalikan potensi hubungan dalam medan [Date Taken]
dengan berkesan. Gabungan penggunaan subkueri dan pengendali IN
menyediakan penyelesaian yang ringkas dan berkuasa untuk cabaran pangkalan data biasa ini.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan 3 Rekod Terbaharu Teratas bagi setiap Kumpulan Pengguna dalam Access SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!