logo

MySQL ROW_NUMBER()-funktio

MySQL:n ROW_NUMBER()-funktiota käytetään palauttamaan järjestysnumero jokaiselle sen osion riville. Se on eräänlainen ikkunatoiminto. Rivin numero alkaa 1:stä osion rivien määrään.

On huomattava, että MySQL ei tue ROW_NUMBER()-funktiota ennen versiota 8.0, mutta ne tarjoavat istunnon muuttuja jonka avulla voimme jäljitellä tätä toimintoa.

Syntaksi

Seuraavassa on perussyntaksi, jossa ROW_NUMBER():ta käytetään MySQL :

java korvaa merkkijonossa
 ROW_NUMBER() OVER ( ) 

Osoittakaamme se esimerkin avulla .

Ensin aiomme luoda taulukon nimeltä ' Henkilö ' käyttämällä alla olevaa lausetta:

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

Seuraavaksi on lisättävä arvot tähän taulukkoon. Suorita alla oleva lausunto:

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

Suorita seuraavaksi SELECT-käsky näyttääksesi tietueet:

merkki merkkijonoon javassa
 mysql> SELECT * FROM Person; 

Saamme tulosteen alla olevan kuvan mukaisesti:

MySQL ROW_NUMBER()-funktio

Nyt voimme käyttää ROW_NUMBER()-funktiota määrittääksemme järjestysnumeron kullekin tietueelle käyttämällä alla olevaa lausetta:

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

Se antaa seuraavan tulosteen:

sonu nigam
MySQL ROW_NUMBER()-funktio

Voimme jälleen käyttää funktiota ROW_NUMBER() määrittääksemme järjestysnumeron jokaiselle osion tietueelle käyttämällä alla olevaa käskyä:

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

Se antaa alla olevan tulosteen, jossa löydettiin kaksi osiota vuoden perusteella (2015 ja 2016).

harald baldr
MySQL ROW_NUMBER()-funktio

MySQL ROW_NUMBER() Istuntomuuttujan käyttäminen

Voimme emuloida ROW_NUMBER()-funktiota lisätäksemme rivinumeron kasvavassa järjestyksessä istuntomuuttujan avulla.

Suorita alla oleva lauseke, joka lisää rivinumeron jokaiselle riville, joka alkaa numerosta 1:

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

Tässä lausunnossa olemme ensin määrittäneet istuntomuuttujan @rivin_numero osoittaa @prfix ja aseta sen arvoksi 0. Sitten olemme valinneet tiedot taulukosta Person ja lisäämme muuttujan @rivi_numero arvoa yhdellä kullekin riville.

Kun kyselyt on suoritettu onnistuneesti, saamme tulosteen seuraavasti:

MySQL ROW_NUMBER()-funktio

Jälleen käytämme istuntomuuttujaa taulukkona ja yhdistämme sen lähdetaulukkoon seuraavan lauseen avulla:

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

Saamme tuloksen seuraavasti:

MySQL ROW_NUMBER()-funktio