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