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

Detaillierte Erklärung des dynamischen Weihnachtsbaums durch JavaScript

Inhaltsverzeichnis 1. Animierter Weihnachtsbaum, ...

Detaillierte Erläuterung der JavaScript-Closure-Probleme

Closures sind eines der traditionellen Features r...

Einführung in die Verwendung des HTML-Elements Noscript

Noscript-Definition und -Verwendung Das Noscript-...

So fügen Sie der Seite über Element UI eine Seitennavigationsleiste hinzu

brauchen Fügen Sie eine Paging-Leiste hinzu, die ...

Schritte zum Verpacken und Konfigurieren von SVG-Komponenten in Vue-Projekten

Ich bin erst vor Kurzem in eine neue Firma einges...

Was ist Webdesign

<br />Originalartikel: http://www.alistapart...

Der vollständige Prozess der Docker-Image-Erstellung

Inhaltsverzeichnis Vorwort Erstellungsschritte Er...

Eine "klassische" Falle der MySQL UPDATE-Anweisung

Inhaltsverzeichnis 1. Problematische SQL-Anweisun...

CentOS7-Konfiguration Alibaba Cloud Yum-Quellmethodencode

Öffnen Sie den Centos Yum-Ordner Geben Sie den Be...

Verwendung des offiziellen MySQL-Exporttools mysqlpump

Inhaltsverzeichnis Einführung Anweisungen Tatsäch...