Heim  >  Artikel  >  Datenbank  >  Wie kann ich den Benutzerrang effizient aus einer ungeordneten Punktetabelle in PHP und MySQL abrufen?

Wie kann ich den Benutzerrang effizient aus einer ungeordneten Punktetabelle in PHP und MySQL abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 22:44:29386Durchsuche

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

Abrufen des Benutzerrangs aus einer ungeordneten Bewertungstabelle in PHP und MySQL

In einem Szenario, in dem Sie eine Bewertungstabelle mit ungeordneten Datensätzen haben, bestimmen Sie Der Rang eines Benutzers kann eine häufige Anforderung sein. Während das Durchlaufen aller Zeilen und das Sortieren nach Punktzahl zur Berechnung des Rangs eine praktikable Option ist, gibt es einen effizienteren Ansatz mit einer SQL-Anweisung.

SQL-Anweisungslösung

Um den Rang eines Benutzers ohne Schleifen abzurufen, können Sie die folgende SQL-Abfrage verwenden:

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

Diese Abfrage verwendet eine Unterabfrage, um die Anzahl der Zeilen in der Tabelle „Scores“ zu zählen, in denen der Score größer als der aktuelle ist Punktestand der Reihe. Das Ergebnis dieser Unterabfrage, das die Anzahl der Benutzer mit höheren Punktzahlen darstellt, wird dann um 1 erhöht, um den Rang zu bestimmen.

Beispielverwendung

Angenommen, eine 'Punktzahl ' Tabelle mit den folgenden Spalten:

  • id (Primärschlüssel)
  • verify_string (string)
  • initials (string)
  • score (integer )

Um den Rang für einen Benutzer mit den Initialen „ABC“ und einer Punktzahl von 100 abzurufen, führen Sie den folgenden PHP-Code aus:

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

Dieser Code gibt den Rang des Benutzers aus , was in diesem Fall „101 von 1000 Spielern“ wäre, wenn insgesamt 1000 Datensätze in der Tabelle wären.

Das obige ist der detaillierte Inhalt vonWie kann ich den Benutzerrang effizient aus einer ungeordneten Punktetabelle in PHP und MySQL abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn