從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 ' 包含以下列的表格:
要擷取首字母為「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中文網其他相關文章!