Mengambil semula Kedudukan Pengguna daripada Jadual Skor Tidak Tersusun dalam PHP dan MySQL
Dalam senario di mana anda mempunyai jadual skor dengan rekod tidak tersusun, menentukan pangkat pengguna boleh menjadi keperluan biasa. Semasa menggelungkan semua baris dan mengisihnya mengikut skor untuk mengira kedudukan adalah pilihan yang berdaya maju, pendekatan yang lebih cekap wujud menggunakan pernyataan SQL.
Penyelesaian Penyata SQL
Untuk mendapatkan semula kedudukan pengguna tanpa gelung, anda boleh menggunakan pertanyaan SQL berikut:
<code class="sql">SELECT s1.initials, ( SELECT COUNT(*) FROM scores AS s2 WHERE s2.score > s1.score )+1 AS rank FROM scores AS s1</code>
Pertanyaan ini menggunakan subkueri untuk mengira bilangan baris dalam jadual 'skor' yang skornya lebih besar daripada semasa markah baris. Hasil daripada subkueri ini, yang mewakili bilangan pengguna dengan skor yang lebih tinggi, kemudiannya dinaikkan sebanyak 1 untuk menentukan kedudukan.
Contoh Penggunaan
Dengan mengandaikan 'skor ' jadual dengan lajur berikut:
Untuk mendapatkan semula kedudukan pengguna dengan huruf awalan 'ABC' dan markah 100, laksanakan kod PHP berikut:
<code class="php">$query = "SELECT initials, ( SELECT COUNT(*) FROM scores AS s2 WHERE s2.score > s1.score )+1 AS rank FROM scores AS s1 WHERE initials = 'ABC' AND score = 100"; $result = $db->query($query); $row = $result->fetch_assoc(); echo "Rank: " . $row['rank'];</code>
Kod ini akan mengeluarkan pangkat pengguna , yang dalam kes ini akan menjadi "101 daripada 1000 pemain" jika terdapat sejumlah 1000 rekod dalam jadual.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kedudukan Pengguna dengan Cekap daripada Jadual Skor Tidak Tersusun dalam PHP dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!