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
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:
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() 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:
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: