MySQL verwendet benutzerdefinierte Sequenzen zur Implementierung von row_number-Funktionen (detaillierte Schritte)

MySQL verwendet benutzerdefinierte Sequenzen zur Implementierung von row_number-Funktionen (detaillierte Schritte)

Nachdem ich einige Artikel gelesen hatte, habe ich endlich herausgefunden, wie man die row_number()-Sortierung in MySQL implementiert.

Lassen Sie mich Ihnen ohne weitere Umschweife den Code zeigen:

Schritt 1: Erstellen Sie eine Tabelle:

Tabellennoten erstellen(
`Name` varchar(10),
`Betreff` varchar(10),
`Punktzahl` int(10)
)

Schritt 2: Daten schreiben

in Noten einfügen (Name, Fach, Note)
Werte('Xiao Ming', 'Chinesisch', 85),
('Xiaohua', 'Chinesisch', 89),
('Xiao Li', 'Chinesisch', 91),
('Xiaofang', 'Chinesisch', 93),
('Xiao Ming', 'Mathematik', 77),
('Xiaohua', 'Mathematik', 95),
('Xiao Li', 'Mathematik', 83),
('Xiaofang', 'Mathematik', 88),
('Xiao Ming', 'Englisch', 90),
('Xiaohua', 'Englisch', 92),
('Xiao Li', 'Englisch', 85),
('Xiaofang', 'Englisch', 88)

Die Daten lauten wie folgt:

Schritt 3:
Anforderung: Finde den zweiten Schüler in jedem Fach

Sortieren Sie zunächst:

Name, Betreff, Punktzahl auswählen 
von Noten
Sortiert nach Fach, Punktzahl absteigend

Die Daten lauten wie folgt:

Dann wird jedes Thema nach Gruppen sortiert

wähle (@i:=case wenn @subject_pre=t1.subject dann @i+1 sonst 1 Ende) als rn,
t1.*,
(@subject_pre:=Betreff) 
aus (
    Name, Betreff, Punktzahl auswählen 
    von Noten
    Sortiert nach Fach, Punktzahl absteigend
) t1, 
(wählen Sie @i:=0, @subject_pre:='') als t2
Gruppieren nach Thema, Punktzahl
Sortiert nach Fach, Punktzahl absteigend 

Zur Erklärung:
Fügen Sie ein Vergleichselement „subject_pre“ hinzu, um das vorherige Thema aufzuzeichnen.
Fügen Sie eine selbsterhöhende Sequenz hinzu, um die Index+1-Funktion zu implementieren.
Da die Daten bereits in der richtigen Reihenfolge vorliegen, wird die Sequenznummer um 1 erhöht, wenn das Objekt, auf das verwiesen wird, mit dem zuvor gespeicherten Objekt identisch ist. Andernfalls wird die Sequenznummer von 1 an neu berechnet.
Dadurch wird eine Gruppensortierung erreicht.

Nehmen Sie abschließend die Daten von rn=2 heraus

Wählen Sie Name, Fach und Punktzahl aus (
wähle (@i:=case wenn @subject_pre=t1.subject dann @i+1 sonst 1 Ende) als rn,
t1.Name,
t1.Betreff,
t1.Punktzahl,
(@subject_pre:=Betreff) 
aus (
Name, Betreff, Punktzahl auswählen 
von Noten
Sortiert nach Fach, Punktzahl absteigend
) t1, 
(wählen Sie @i:=0, @subject_pre:='') als t2
Gruppieren nach Thema, Punktzahl
Sortiert nach Fach, Punktzahl absteigend
)
wobei rn=2

Das Endergebnis ist wie folgt:

Auf diese Weise wird die Funktion row_number() mithilfe von MySQL implementiert.

Viele der Informationen, die ich im Internet gefunden habe, sind nicht klar formuliert, deshalb erkläre ich diese Implementierung hier anhand eines Beispiels. Ich hoffe, es wird Ihnen helfen!

Dies ist das Ende dieses Artikels über die Verwendung benutzerdefinierter Sequenzen in MySQL zur Implementierung der Funktion „row_number“. Weitere Informationen zur MySQL-Funktion „row_number“ finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Verwendung der MySQL-Funktionen row_number() und over()
  • Implementierungsprozess von row_number in MySQL
  • Verwendung und Vorsichtsmaßnahmen der Mysql-Sortierfunktion „row number()“

<<:  Detaillierte Erklärung der Prinzipien des responsiven Systems von Vue

>>:  HTML-Seite unterstützt die Implementierung des Dunkelmodus

Artikel empfehlen

JavaScript zum Implementieren der Anzeige von Suchdaten

In diesem Artikel wird der Datenanzeigecode für d...

Vue implementiert Fuzzy-Abfrage-MySQL-Datenbankdaten

Inhaltsverzeichnis 1. Nachfrage 2. Umsetzung 3. E...

So erstellen Sie mit Squid einen Proxyserver für http und https

Als wir nginx eingeführt haben, haben wir nginx a...

10 sehr gute CSS-Fähigkeiten sammeln und teilen

Hier können Sie durch geschickten Einsatz von CSS-...

Schritte zur Annotation von Metadeklarationen

Schritte zur Annotation von Metadeklarationen: 1. ...

uni-app implementiert NFC-Lesefunktion

In diesem Artikel wird der spezifische Code der U...

Ideen und Praxis einer mehrsprachigen Lösung für ein Vue.js-Frontend-Projekt

Inhaltsverzeichnis 1. Welche Inhalte müssen üblic...

Einfaches Beispiel für die Verwendung eines Docker-Containers

Inhaltsverzeichnis 1. Ziehen Sie das Bild 2. Ausf...