logo

MySQL ROW_NUMBER()-Funktion

Die Funktion ROW_NUMBER() in MySQL wird verwendet, um die zurückzugeben fortlaufende Nummer für jede Zeile innerhalb ihrer Partition. Es handelt sich um eine Art Fensterfunktion. Die Zeilennummer beginnt bei 1 und entspricht der Anzahl der in der Partition vorhandenen Zeilen.

Es ist zu beachten, dass MySQL die Funktion ROW_NUMBER() vor Version 8.0 nicht unterstützt, sie jedoch eine bereitstellt Sitzungsvariable Dadurch können wir diese Funktion emulieren.

Syntax

Im Folgenden finden Sie die grundlegende Syntax für die Verwendung von ROW_NUMBER() MySQL :

Zeichenfolge hinzufügen
 ROW_NUMBER() OVER ( ) 

Lassen Sie es uns anhand eines Beispiels demonstrieren .

Zuerst erstellen wir eine Tabelle mit dem Namen „ Person ' mit der folgenden Anweisung:

Unterschied zwischen Tiger und Löwe
 CREATE TABLE Person ( Name varchar(45) NOT NULL, Product varchar(45) DEFAULT NULL, Country varchar(25) DEFAULT NULL, Year int NOT NULL ); 

Als nächstes müssen Werte zu dieser Tabelle hinzugefügt werden. Führen Sie die folgende Anweisung aus:

 INSERT INTO Person(Name, Product, Country, Year) VALUES ('Stephen', 'Computer', 'USA', 2015), ('Joseph', 'Laptop', 'India', 2016), ('John', 'TV', 'USA', 2016), ('Donald', 'Laptop', 'England', 2015), ('Joseph', 'Mobile', 'India', 2015), ('Peter', 'Mouse', 'England', 2016); 

Führen Sie als Nächstes die SELECT-Anweisung aus, um die Datensätze anzuzeigen:

 mysql> SELECT * FROM Person; 

Wir erhalten die Ausgabe, wie unten gezeigt:

MySQL ROW_NUMBER()-Funktion

Jetzt können wir die Funktion ROW_NUMBER() verwenden, um jedem Datensatz eine Sequenznummer zuzuweisen, indem wir die folgende Anweisung verwenden:

 SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person; 

Es wird die folgende Ausgabe ausgegeben:

MySQL ROW_NUMBER()-Funktion

Auch hier können wir die Funktion ROW_NUMBER() verwenden, um jedem Datensatz innerhalb einer Partition eine Sequenznummer zuzuweisen, indem wir die folgende Anweisung verwenden:

Maus und Maustypen
 SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person; 

Es wird die folgende Ausgabe angezeigt, in der zwei Partitionen basierend auf dem Jahr (2015 und 2016) gefunden werden.

Stringlänge Java
MySQL ROW_NUMBER()-Funktion

MySQL ROW_NUMBER() mit Sitzungsvariable

Wir können die Funktion ROW_NUMBER() emulieren, um mithilfe der Sitzungsvariablen eine Zeilennummer in aufsteigender Reihenfolge hinzuzufügen.

Führen Sie die folgende Anweisung aus, die die Zeilennummer für jede Zeile hinzufügt, die bei 1 beginnt:

 SET @row_number = 0; SELECT Name, Product, Year, Country, (@row_number:=@row_number + 1) AS row_num FROM Person ORDER BY Country; 

In dieser Anweisung müssen wir zunächst die Sitzungsvariable angeben @Zeilennummer angegeben durch @prfix und setzen seinen Wert auf 0. Dann haben wir die Daten aus der Tabelle Person ausgewählt und den Wert für die Variable @row_number für jede Zeile um eins erhöht.

Nach erfolgreicher Ausführung der Abfragen erhalten wir die folgende Ausgabe:

MySQL ROW_NUMBER()-Funktion

Auch hier werden wir eine Sitzungsvariable als Tabelle verwenden und sie mithilfe der folgenden Anweisung kreuzweise mit der Quelltabelle verknüpfen:

 SELECT (@row_number:=@row_number + 1) AS row_num, Name, Country, Year FROM Person, (SELECT @row_number:=0) AS temp ORDER BY Year; 

Wir erhalten die folgende Ausgabe:

MySQL ROW_NUMBER()-Funktion