Kemasukan terkini setiap kumpulan
Matlamatnya adalah untuk mendapatkan kemasukan terkini setiap kumpulan unik dari jadual pangkalan data seperti
. Jadual ini mengandungi satu siri rekod perubahan status dokumen, setiap dokumen dikenalpasti oleh. Tugasnya adalah untuk mengekstrak status kemas kini terkini setiap dokumen dan tarikh persatuannya. DocumentStatusLogs
DocumentID
Pertimbangkan penyeragaman pangkalan data
Pertama sekali, kita perlu mempertimbangkan sama ada reka bentuk pangkalan data telah diseragamkan dengan betul. Sekiranya maklumat status disimpan dalam jadual induk atau sub -meja? Jika anda hanya perlu mengakses keadaan semasa setiap dokumen, sebaiknya tambah medan status terus ke jadual induk untuk mengelakkan menggunakan jadual berasingan untuk mengesan perubahan status. Walau bagaimanapun, jika anda perlu mengekalkan rekod sejarah kemas kini negara, lebih berfaedah untuk mengekalkan perubahan negeri dalam jadual berasingan.
Ambil entri atas
Kembali ke masalah awal, tidak ada fungsi polimer yang dibina untuk mengambil semula entri atas setiap kumpulan. Oleh itu, pertanyaan tambahan atau sub -queries perlu dicapai untuk mencapai hasil yang diperlukan. pertanyaan cte
Satu kaedah adalah untuk membuat formula ekspresi awam (CTE) untuk menghasilkan hasil pertengahan. CTE bernama meningkatkan jadual asal dengan menambahkan nombor baris ke setiap entri. Nombor baris ini dihasilkan dalam setiap kumpulan , dan disusun mengikut urutan
yang menurun.
Pertanyaan ini memilih garis dengan nombor baris (RN) sama dengan 1 dari jadual , dengan berkesan menyediakan entri atas setiap kumpulan. cte
DocumentID
kaedah alternatif DateCreated
<code class="language-sql">WITH cte AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY DocumentID ORDER BY DateCreated DESC) AS rn FROM DocumentStatusLogs ) SELECT * FROM cte WHERE rn = 1</code>
dan bukannya cte
, terutamanya apabila setiap DocumentID
mempunyai pelbagai entri dalam tarikh tertentu.
Kesimpulan
Dengan menggunakan teknologi di atas, anda boleh mengekstrak entri terkini setiap kumpulan untuk menggunakan sub -query CTE atau menggunakan fungsi DENSE_RANK
. Kaedah yang anda pilih bergantung kepada keperluan data dan pertimbangan prestasi anda. ROW_NUMBER
Atas ialah kandungan terperinci Bagaimanakah saya dapat mengambil entri terkini untuk setiap kumpulan dalam jadual pangkalan data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!