logo

MySQL ROW_NUMBER() függvény

A MySQL ROW_NUMBER() függvénye a sorszám a partíción belüli minden sorhoz. Ez egyfajta ablak funkció. A sorszám 1-től kezdődik a partícióban lévő sorok számáig.

Meg kell jegyezni, hogy a MySQL nem támogatja a ROW_NUMBER() függvényt a 8.0-s verzió előtt, de biztosít egy munkamenet változó amely lehetővé teszi ennek a függvénynek az emulálását.

Szintaxis

A következő az alapvető szintaxis a ROW_NUMBER() használatához MySQL :

kettő az egy multiplexer
 ROW_NUMBER() OVER ( ) 

Mutassuk meg egy példán keresztül .

Először egy táblát fogunk létrehozni Személy ' az alábbi állítást használva:

 CREATE TABLE Person ( Name varchar(45) NOT NULL, Product varchar(45) DEFAULT NULL, Country varchar(25) DEFAULT NULL, Year int NOT NULL ); 

Ezután értékeket kell hozzáadni ehhez a táblázathoz. Hajtsa végre az alábbi utasítást:

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

Ezután hajtsa végre a SELECT utasítást a rekordok megjelenítéséhez:

sziget java
 mysql> SELECT * FROM Person; 

A kimenetet az alábbiak szerint kapjuk meg:

java dupla karakterlánchoz
MySQL ROW_NUMBER() függvény

Most már használhatjuk a ROW_NUMBER() függvényt, hogy sorszámot rendeljünk minden rekordhoz az alábbi utasítás segítségével:

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

A következő kimenetet adja:

MySQL ROW_NUMBER() függvény

Ismét használhatjuk a ROW_NUMBER() függvényt, hogy sorszámot rendeljünk a partíción belüli minden rekordhoz az alábbi utasítás segítségével:

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

Az alábbi kimenetet adja meg, ahol két partíció található az év alapján (2015 és 2016).

próbáld elkapni a java-t
MySQL ROW_NUMBER() függvény

MySQL ROW_NUMBER() Session Variable használatával

Emulálhatjuk a ROW_NUMBER() függvényt, hogy sorszámot adjunk hozzá növekvő sorrendben a session változó használatával.

Hajtsa végre az alábbi utasítást, amely minden sorhoz hozzáadja a sorszámot, amely 1-től kezdődik:

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

Ebben az utasításban először a session változót adjuk meg @sor_szám Ezt követően a Személy táblából kiválasztottuk az adatokat, és soronként eggyel növeljük a @row_number változó értékét.

A lekérdezések sikeres végrehajtása után az alábbi kimenetet kapjuk:

MySQL ROW_NUMBER() függvény

Ismét egy munkamenet-változót fogunk használni táblázatként, és keresztcsatlakozni a forrástáblával a következő utasítással:

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

A kimenetet az alábbiak szerint kapjuk:

MySQL ROW_NUMBER() függvény