logo

Funcția MySQL ROW_NUMBER().

Funcția ROW_NUMBER() din MySQL este folosită pentru a returna număr secvențial pentru fiecare rând din partiția sa. Este un fel de funcție de fereastră. Numărul rândului începe de la 1 până la numărul de rânduri prezent în partiție.

Trebuie remarcat faptul că MySQL nu acceptă funcția ROW_NUMBER() înainte de versiunea 8.0, dar oferă o variabila de sesiune care ne permite să emulăm această funcție.

Sintaxă

Următoarele sunt sintaxa de bază pentru a utiliza ROW_NUMBER() în MySQL :

java int ca șir
 ROW_NUMBER() OVER ( ) 

Să o demonstrăm folosind un exemplu .

În primul rând, vom crea un tabel numit „ Persoană ' folosind declarația de mai jos:

cm în picioare și inci
 CREATE TABLE Person ( Name varchar(45) NOT NULL, Product varchar(45) DEFAULT NULL, Country varchar(25) DEFAULT NULL, Year int NOT NULL ); 

În continuare, este necesar să adăugați valori la acest tabel. Executați declarația de mai jos:

 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); 

Apoi, executați instrucțiunea SELECT pentru a afișa înregistrările:

 mysql> SELECT * FROM Person; 

Vom obține rezultatul, așa cum se arată mai jos:

Funcția MySQL ROW_NUMBER().

Acum, putem folosi funcția ROW_NUMBER() pentru a atribui un număr de secvență pentru fiecare înregistrare folosind instrucțiunea de mai jos:

1 milion câte 0
 SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person; 

Va da urmatoarea iesire:

Funcția MySQL ROW_NUMBER().

Din nou, putem folosi funcția ROW_NUMBER() pentru a atribui un număr de secvență pentru fiecare înregistrare dintr-o partiție folosind instrucțiunea de mai jos:

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

Acesta va oferi rezultatul de mai jos, unde s-au găsit două partiții în funcție de an (2015 și 2016).

harald baldr
Funcția MySQL ROW_NUMBER().

MySQL ROW_NUMBER() Folosind variabila de sesiune

Putem emula funcția ROW_NUMBER() pentru a adăuga un număr de rând în ordine crescătoare folosind variabila de sesiune.

Executați instrucțiunea de mai jos care adaugă numărul rândului pentru fiecare rând, care începe de la 1:

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

În această declarație, trebuie mai întâi să specificăm variabila de sesiune @row_number indicat de @prfix și setați valoarea acestuia la 0. Apoi, am selectat datele din tabelul Persoană și creștem valoarea variabilei @row_number cu câte unul la fiecare rând.

După executarea cu succes a interogărilor, vom obține rezultatul de mai jos:

Funcția MySQL ROW_NUMBER().

Din nou, vom folosi o variabilă de sesiune ca tabel și o vom uni cu tabelul sursă folosind următoarea instrucțiune:

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

Vom obține rezultatul după cum urmează:

Funcția MySQL ROW_NUMBER().