首頁  >  文章  >  資料庫  >  如何在 PHP 和 MySQL 中從無序分數表中有效地檢索使用者排名?

如何在 PHP 和 MySQL 中從無序分數表中有效地檢索使用者排名?

Barbara Streisand
Barbara Streisand原創
2024-11-01 22:44:29386瀏覽

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

從PHP 和MySQL 中的無序分數表檢索使用者排名

在您有一個包含無序記錄的分數表的場景中,確定使用者的等級可能是常見的要求。雖然循環遍歷所有行並按分數排序以計算排名是一個可行的選擇,但使用 SQL 語句有更有效的方法。

SQL 語句解決方案

要在不循環的情況下擷取使用者的排名,您可以使用下列SQL 查詢:

<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>

此查詢使用子查詢來計算「scores」表中分數大於目前分數的行數行的得分。此子查詢的結果代表得分較高的使用者數量,然後加 1 以確定排名。

用法範例

假設'scores ' 包含以下列的表格:

  • id(主鍵)
  • verify_string (字串)
  • 縮寫(字串)
  • 分數(整數) )

要擷取首字母為「ABC」且分數為100 的使用者的排名,請執行以下PHP 代碼:

<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>

此代碼將輸出用戶的排名,在本例中,如果表中總共有1000 條記錄,則為“1000 名玩家中的101 名” 。

以上是如何在 PHP 和 MySQL 中從無序分數表中有效地檢索使用者排名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn