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:
|
<<: Implementierung des Docker-Buildings für Maven+Tomcat-Basisimages
>>: Komponentendesignspezifikationen für die Entwicklung von WeChat-Miniprogrammen
01 Das Konzept der parallelen Replikation In der ...
Ich habe kürzlich Bootstrap zum Entwickeln einer ...
Erstellen Sie docker-compose.yml und füllen Sie d...
Umweltvorbereitung: Stellen Sie lnmp auf einem Ho...
bmi Voyager Heugabel Ulster Lebensmittelhändler F...
Szenario: Die gecrawlten Daten erzeugen eine Date...
Über Ereignisse: MySQL 5.1 hat begonnen, das Konz...
1.Sperren? 1.1 Was ist ein Schloss? Die eigentlic...
Detaillierte Erklärung der MySQL-Anzahl Die Funkt...
Vorwort Normale Benutzer definieren geplante Cron...
Inhaltsverzeichnis Vorwort 1. Art von 2. Instanz ...
Dieser Artikel stellt eine sehr interessante Attr...
Die Übergangsdokumentadresse definiert eine Hinte...
Vorwort Verwenden Sie js, um einen Jahresrotation...
Inhaltsverzeichnis 1. Hilfe-Befehl 2. Befehl „Spi...