MySQL -Zeilennummer -Fensterfunktion

MySQL -Zeilennummer -Fensterfunktion
Innerhalb von MySQL enthält eine Zeilennummer () -Methode eine chronologische Zahl für jede Zeile innerhalb der Partition. Es ist nur eine Fensterfunktion, die irgendeine Art ist. Die Zahl der Zeilen beginnt bei 1 mit der Figur der Zeilen innerhalb der Partition. Denken Sie daran, vor Version 8.0, MySQL erlaubt die Funktion Zeilennummer () jedoch nicht. Sie bietet jedoch eine Sitzungsvariable, die eins hilft, diese Funktion nachzuahmen. Wir werden mehr über MySQL Row Number () -Funktionalität in diesem Leitfaden verstehen und für jede Zeile in der Ergebnissammlung eine aufeinanderfolgende Zahl erstellen. In MySQL werden die Methoden row_number () mit den nachfolgenden Klauseln verwendet:
  • Die Over () Klausel wird darin verwendet.
  • Bestellungen nach Klausel ordnen das Ergebnis gemäß der Sortierreihenfolge der genannten Spalte an.

Syntax:

>> Wählen Sie col_name, row_number () over (partition von col_name, order von col_name) als row_num aus table_name;

Lassen Sie uns die MySQL-Befehlszeilen-Client-Shell aus den Anwendungen öffnen und geben Sie das Passwort zum Anmeldung ein.

Sie müssen eine neue Tabelle erstellen oder die Standardtabelle verwenden, um mit der Arbeit in der Zeilennummer -Funktion zu beginnen. Wie im folgenden Bild dargestellt, haben wir eine Tabelle „Tiere“ im Schema „Daten“ mit einigen Datensätzen darin. Lassen Sie uns seine Datensätze mit dem Anweisungen auswählen.

>> aus Daten auswählen.Tiere;

Beispiel 01: row_number () Verwenden der Bestellung nach Klausel

Wir werden dieselbe Tabelle verwenden, um einige Beispiele der Zeilennummernfunktion zu erläutern. Wir nehmen ein Beispiel für die Funktion row_number (), gefolgt von Over (), während nur die Bestellung nach Klausel verwendet wird. Wir haben alle Datensätze abgeholt, während wir die Zeilen gemäß der Spalte "Preis" beauftragt haben. Wir haben einer Spalte den Namen "row_num" gegeben, in dem die Zahlen der Zeile gespeichert werden. Versuchen wir den Befehl unten, dies zu tun.

>> select *, row_number () over (bestellen nach preis) als row_num aus Daten.Tiere;

Nach Ausführung der obigen Abfrage können wir feststellen, dass die Zeilen mit Zahlen gemäß der Sortierreihenfolge der Spalte „Preis“ zugewiesen wurden. Sie könnten denken, dass einige kleinere Preise oben in der Spalte sein sollten und danach sortieren sollten. In der Reihenfolge nach Klausel wird jedoch nur die erste Ziffer oder Alphabet der Spalte zur Sortierung von Werten sortiert.

Lassen Sie uns dieselbe Abfrage ausführen, gefolgt von der Bestellung per Klausel, während die Sortierreihenfolge der Spalte „Alter“ verwendet wird. Die Ausgabe wird gemäß der Spalte „Alter“ angegeben.

>> select *, row_number () over (bestellen nach Alter) als Row_num aus Daten.Tiere;

Beispiel 02: row_number () Verwenden Sie Partition nach Klausel

Wir werden die einzige Partition nach Klausel in der Abfrage row_number () verwenden, um die Ergebnisse zu überprüfen. Wir haben die Auswahlabfrage verwendet, um die Datensätze zu holen, gefolgt von row_number () und über Klausel, während die Tabelle gemäß der Spalte „Farbe“ verteilt wurde. Führen Sie den angehängten Befehl unten in der Befehlsschale aus.

>> select *, row_number () over (Partition nach Farbe) als row_num aus Daten.Tiere;

In dem Ergebnis können Sie feststellen, dass die Nummerierung von Zeilen in Partitionen zugewiesen wurde. Da wir 4 Werte für Farbe „schwarz“ haben, die 4 Zeilen benötigen. Deshalb hat es Vier-Reihen-Nummern von 1 bis 4 und umgekehrt.

Versuchen Sie das gleiche Beispiel, das diesmal durch die Spalte „Geschlecht“ verteilt wird. Wie wir wissen, haben wir nur zwei Geschlechter in dieser Tabelle. Deshalb werden 2 Partitionen gebildet. Frauen besetzen 9 Zeilen, deshalb hat es eine Reihe von 1 bis 9. Während Männer 8 Werte haben, hat es deshalb 1 bis 8.

>> select *, row_number () over (Partition nach Geschlecht) als row_num aus Daten.Tiere;

Beispiel 03: row_number () Verwenden Sie Partition von & order by

Wir haben die oben genannten Beispiele in der Befehlszeile von MySQL gemacht. Jetzt ist es Zeit, das Beispiel row_number () in der MySQL Workbench 8 durchzuführen.0. Öffnen Sie also die MySQL Workbench 8.0 aus den Anwendungen. Verbinden Sie die MySQL Workbench mit der lokalen Host -Root -Datenbank, um mit der Arbeit zu beginnen.

Auf der linken Seite der MySQL Workbench finden Sie die Schemaleiste, den Navigator blasen. In dieser Schema -Leiste finden Sie die Liste der Datenbanken. Unter der Liste der Datenbanken haben Sie unterschiedliche Tabellen und gespeicherte Prozeduren, wie Sie im folgenden Bild sehen können. Wir haben unterschiedliche Tabellen in unserer Datenbank "Daten". Wir öffnen die Tabelle 'Order1' mit dem Befehl SELECT im Abfragebereich aus, um sie für die Funktion von row_number () zu verwenden.

>> aus Daten auswählen.Order1;

Die Tabelle "Order1" wurde in der Gitteransicht angezeigt, wie unten gezeigt. Sie können sehen, dass es 4 Spaltenfelder, ID, Region, Status und Orderno enthält. Wir werden alle Datensätze dieser Tabelle abrufen, während wir die Bestellung nach und Partition nach Klausel verwenden, beide gleichzeitig.

Im Abfragebereich von MySQL Workbench 8.0 Geben Sie die untergespielte Abfrage ein. Die Abfrage wurde mit der Auswahlklausel gestartet, in der alle Datensätze gefolgt von der Funktion row_number () zusammen mit der Überklausel abgerufen werden. Nach der Over -Klausel haben wir die Spalte „Status“ angegeben, die durch die Aussage „Partition by“ verläuft wurde, um die Tabelle gemäß dieser Tabelle in Partitionen zu unterteilen. Die Reihenfolge nach Klausel wurde verwendet, um die Tabelle gemäß Spalte „Region“ absteigend zu arrangieren. Die Zeilennummern werden in der Spalte "row_num" aufbewahrt. Tippen Sie auf das Flash -Symbol, um diesen Befehl auszuführen.

Das untergespielte Ergebnis wird angezeigt. Zunächst wurde die Tabelle in zwei Teile gemäß den Werten des Spalte „Status“ unterteilt. Danach wurde es in der absteigenden Reihenfolge der Spalte "Region" dargestellt, und die Partitionen wurden mit den Zeilennummern zugewiesen.

Abschluss:

Schließlich haben wir alle notwendigen Beispiele für die Verwendung der Funktion row_number () in MySQL Workbench und MySQL Command Line Client Shell abgeschlossen.