logo

Funkcija MySQL ROW_NUMBER().

Funkcija ROW_NUMBER() u MySQL-u koristi se za vraćanje redni broj za svaki red unutar svoje particije. To je vrsta funkcije prozora. Broj reda počinje od 1 do broja redaka prisutnih u particiji.

Treba napomenuti da MySQL ne podržava funkciju ROW_NUMBER() prije verzije 8.0, ali oni pružaju varijabla sesije koji nam omogućuje oponašanje ove funkcije.

Sintaksa

Slijedi osnovna sintaksa za korištenje ROW_NUMBER(). MySQL :

naredba u čvoru js
 ROW_NUMBER() OVER ( ) 

Pokažimo to na primjeru .

Prvo ćemo kreirati tablicu pod nazivom ' Osoba ' pomoću donje izjave:

matematičke metode u Javi
 CREATE TABLE Person ( Name varchar(45) NOT NULL, Product varchar(45) DEFAULT NULL, Country varchar(25) DEFAULT NULL, Year int NOT NULL ); 

Zatim je potrebno dodati vrijednosti u ovu tablicu. Izvršite naredbu u nastavku:

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

Zatim izvršite naredbu SELECT za prikaz zapisa:

 mysql> SELECT * FROM Person; 

Dobit ćemo izlaz kao što je prikazano u nastavku:

Funkcija MySQL ROW_NUMBER().

Sada možemo upotrijebiti funkciju ROW_NUMBER() da dodijelimo redni broj za svaki zapis koristeći donju izjavu:

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

To će dati sljedeći izlaz:

Funkcija MySQL ROW_NUMBER().

Opet, možemo upotrijebiti funkciju ROW_NUMBER() da dodijelimo redni broj za svaki zapis unutar particije koristeći donju izjavu:

ups koncepti u Javi
 SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person; 

Dat će izlaz kao u nastavku gdje su pronađene dvije particije na temelju godine (2015. i 2016.).

obrasci java softvera
Funkcija MySQL ROW_NUMBER().

MySQL ROW_NUMBER() Korištenje varijable sesije

Možemo emulirati funkciju ROW_NUMBER() da dodamo broj retka rastućim redoslijedom pomoću varijable sesije.

Izvršite naredbu u nastavku koja dodaje broj reda za svaki redak, koji počinje od 1:

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

U ovoj izjavi prvo smo specificirali varijablu sesije @broj_reda naznačeno s @prfix i postavili njegovu vrijednost na 0. Zatim smo odabrali podatke iz tablice Osoba i povećavamo vrijednost za varijablu @row_number za jedan u svakom redu.

Nakon uspješnog izvršavanja upita, dobit ćemo rezultat kao u nastavku:

Funkcija MySQL ROW_NUMBER().

Opet ćemo upotrijebiti varijablu sesije kao tablicu i spojiti je s izvornom tablicom pomoću sljedeće izjave:

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

Dobit ćemo izlaz kao u nastavku:

Funkcija MySQL ROW_NUMBER().