MySQL implementiert Ranking und fragt die angegebene Benutzer-Ranking-Funktion ab (parallele Ranking-Funktion) Beispielcode

MySQL implementiert Ranking und fragt die angegebene Benutzer-Ranking-Funktion ab (parallele Ranking-Funktion) Beispielcode

Vorwort

Dieser Artikel stellt hauptsächlich die relevanten Inhalte zu MySQL vor, um Rankings zu realisieren und die angegebene Benutzer-Ranking-Funktion (parallele Ranking-Funktion) abzufragen, und gibt sie zu Ihrer Referenz und zum Lernen weiter. Werfen wir einen Blick auf die ausführliche Einführung.

Tabellenstruktur:

CREATE TABLE test.testsort (
 
id int(11) NICHT NULL AUTO_INCREMENT,
 
uid int(11) DEFAULT 0 COMMENT 'Benutzer-ID',
 
Punktzahl Dezimalzahl (10, 2) STANDARD 0,00 KOMMENTAR 'Punktzahl',
 
PRIMÄRSCHLÜSSEL (id)
 
)
 
Motor = INNODB
 
AUTO_INCREMENT = 1
 
Zeichensatz utf8
 
COLLATE utf8_general_ci
 
COMMENT = 'Testsortierung'
 
ROW_FORMAT = DYNAMISCH;

Idee: Sie können die Ergebnisse zunächst sortieren und dann nummerieren; Sie können die Ergebnisse auch zunächst abfragen und dann sortieren und nummerieren.

veranschaulichen:

@rownum := @rownum + 1 In diesem Satz wird := für die Zuweisung verwendet. Dies bedeutet, dass zuerst @rownum + 1 ausgeführt wird und dann der Wert @rownum zugewiesen wird.

(SELECT @rownum := 0) r Dieser Satz bedeutet, den Anfangswert des Felds rownum auf 0 zu setzen, d. h. die Nummerierung beginnt bei 1.

Ranking erreichen:

Methode 1:

SELECT t.*, @rownum := @rownum + 1 AS rownum
 
VON (AUSWÄHLEN @rownum := 0) r, (AUSWÄHLEN * VON testsort ORDER BY score DESC) ALS t;

Methode 2:

SELECT t.*, @rownum := @rownum + 1 AS rownum
 
VON (SELECT @rownum := 0) r, Testsortierung AS t
 
ORDER BY t.score DESC;

Ergebnis:

Zeigen Sie das Ranking eines bestimmten Benutzers an:

Methode 1:

WÄHLEN Sie b.* FROM
 
(
 
SELECT t.*, @rownum := @rownum + 1 AS rownum
 
VON (SELECT @rownum := 0) r,
 
(SELECT * FROM testsort ORDER BY score DESC) AS t
 
) AS b, wobei b.uid = 222;

Methode 2:

WÄHLEN Sie b.* von
 
(
 
SELECT t.*, @rownum := @rownum + 1 AS rownum
 
VON (SELECT @rownum := 0) r, Testsortierung AS t
 
ORDER BY t.score DESC
 
) als b, wobei b.uid = 222;

Ergebnis:

So erreichen Sie ein Ranking-Unentschieden (gleicher Rang bei gleicher Punktzahl):

WÄHLEN
 
Objekt.uid,
 
obj.score,
 
FALL
 
WENN @rowtotal = obj.score DANN
 
@rownum
 
WANN @rowtotal := obj.score DANN
 
@rownum :=@rownum + 1
 
WENN @rowtotal = 0 DANN
 
@rownum :=@rownum + 1
 
END AS Zeilennummer
 
AUS
 
(
 
WÄHLEN
 
Flüssigkeit,
 
Punktzahl
 
AUS
 
testsort
 
BESTELLEN BIS
 
Punktzahl DESC
 
) AS Objekt,
 
(AUSWÄHLEN @rownum := 0 ,@rowtotal := NULL)

Abfrage des Rankings eines bestimmten Benutzers:

WÄHLEN Sie insgesamt.* FROM
 
(WÄHLEN
 
Objekt.uid,
 
obj.score,
 
FALL
 
WENN @rowtotal = obj.score DANN
 
@rownum
 
WANN @rowtotal := obj.score DANN
 
@rownum :=@rownum + 1
 
WENN @rowtotal = 0 DANN
 
@rownum :=@rownum + 1
 
END AS Zeilennummer
 
AUS
 
(
 
WÄHLEN
 
Flüssigkeit,
 
Punktzahl
 
AUS
 
testsort
 
BESTELLEN BIS
 
Punktzahl DESC
 
) AS Objekt,
 
(SELECT @rownum := 0 ,@rowtotal := NULL) r) AS total WHERE total.uid = 222;

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • MySQL-Sortierung zum Abrufen eines Ranking-Beispielcodes
  • MySQL-Seitenzugriffsstatistiken und -Rankings
  • So fügen Sie den Ergebnissen benutzerdefinierter Feldabfragen in MySQL eine Rangfolge hinzu
  • MySQL-Gruppierung, um die ersten paar Datensätze in jeder Gruppe (Ranking) mit Recherche nach „Gruppieren nach“ und „Sortieren nach“ zu erhalten
  • Fassen Sie einige häufige Rankingprobleme in MySQL zusammen

<<:  Implementierung des Docker-Buildings für Maven+Tomcat-Basisimages

>>:  Komponentendesignspezifikationen für die Entwicklung von WeChat-Miniprogrammen

Artikel empfehlen

Eine kurze Analyse der parallelen MySQL-Replikation

01 Das Konzept der parallelen Replikation In der ...

Docker-Compose erstellt schnell Schritte für ein privates Docker-Warehouse

Erstellen Sie docker-compose.yml und füllen Sie d...

So stellen Sie LNMP und phpMyAdmin in Docker bereit

Umweltvorbereitung: Stellen Sie lnmp auf einem Ho...

25 Beispiele für Website-Design im Nachrichtenstil

bmi Voyager Heugabel Ulster Lebensmittelhändler F...

Eine einfache Methode zum Zusammenführen und Entfernen doppelter MySQL-Tabellen

Szenario: Die gecrawlten Daten erzeugen eine Date...

So löschen Sie Datensätze in MySQL automatisch vor einer bestimmten Zeit

Über Ereignisse: MySQL 5.1 hat begonnen, das Konz...

Warum Entwickler Datenbanksperren im Detail verstehen müssen

1.Sperren? 1.1 Was ist ein Schloss? Die eigentlic...

MySQL count: ausführliche Erklärung und Funktionsbeispielcode

Detaillierte Erklärung der MySQL-Anzahl Die Funkt...

Vier Methoden zur Verwendung von JS zur Bestimmung von Datentypen

Inhaltsverzeichnis Vorwort 1. Art von 2. Instanz ...

Detaillierte Erklärung des wunderbaren CSS-Attributs MASK

Dieser Artikel stellt eine sehr interessante Attr...

Vue-Beispielcode mit dem Animationseffekt „Übergangskomponente“

Die Übergangsdokumentadresse definiert eine Hinte...

Detaillierte Erläuterung der allgemeinen Docker-Befehle Study03

Inhaltsverzeichnis 1. Hilfe-Befehl 2. Befehl „Spi...