Mengambil Masa Tarikh Maksimum dengan Cekap dengan Data Pemain Berkaitan dalam MySQL
Artikel ini menunjukkan cara memilih masa tarikh maksimum untuk setiap entri "rumah" unik dalam jadual MySQL sambil mengekalkan semua maklumat pemain yang berkaitan. Cabarannya terletak pada mendapatkan semula nilai masa tarikh maksimum untuk setiap rumah tanpa kehilangan titik data berharga lain seperti butiran pemain dan sumber. Percubaan sebelumnya selalunya menghasilkan data pendua atau salah.
Penyelesaian optimum melibatkan subkueri untuk mengenal pasti masa tarikh maksimum bagi setiap rumah, diikuti dengan operasi gabungan untuk mendapatkan maklumat baris yang lengkap.
Penyelesaian
Pertanyaan SQL berikut berkesan menangani masalah ini:
<code class="language-sql">SELECT tt.* FROM topten tt INNER JOIN (SELECT home, MAX(datetime) AS MaxDateTime FROM topten GROUP BY home) groupedtt ON tt.home = groupedtt.home AND tt.datetime = groupedtt.MaxDateTime;</code>
Pertanyaan ini menggunakan penyambungan sendiri. Subkueri dalaman (groupedtt
) mengumpulkan data mengikut home
dan menentukan maksimum datetime
untuk setiap kumpulan. Pertanyaan luar kemudiannya menggabungkan hasil ini kembali ke jadual asal (tt
) menggunakan kedua-dua home
dan MaxDateTime
sebagai syarat gabungan. Ini memastikan bahawa hanya baris yang mewakili tarikh maksimum untuk setiap rumah dipilih, sambil mengekalkan semua lajur daripada jadual asal. Pendekatan ini mengelakkan pertindihan data dan memastikan ketepatan data.
Atas ialah kandungan terperinci Bagaimana untuk memilih datetime maksimum untuk setiap rumah semasa mengekalkan maklumat pemain di MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!