Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mendapatkan Kedudukan Pengguna dengan Cekap daripada Jadual Skor Tidak Tersusun dalam PHP dan MySQL?

Bagaimana untuk Mendapatkan Kedudukan Pengguna dengan Cekap daripada Jadual Skor Tidak Tersusun dalam PHP dan MySQL?

Barbara Streisand
Barbara Streisandasal
2024-11-01 22:44:29386semak imbas

How to Efficiently Retrieve User Rank from an Unordered Scores Table in PHP and MySQL?

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:

  • id (kunci utama)
  • rentetan_sahkan (rentetan)
  • initial (rentetan)
  • skor (integer )

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn