logo

MySQL ROW_NUMBER() funkcija

MySQL funkcija ROW_NUMBER() naudojama norint grąžinti eilės numeris kiekvienai jos skirsnio eilutei. Tai savotiška lango funkcija. Eilutės numeris prasideda nuo 1 iki skaidinyje esančių eilučių skaičiaus.

Reikia pažymėti, kad MySQL nepalaiko funkcijos ROW_NUMBER() iki 8.0 versijos, tačiau jos suteikia seanso kintamasis kuri leidžia mums imituoti šią funkciją.

Sintaksė

Toliau pateikiama pagrindinė sintaksė, kurioje reikia naudoti ROW_NUMBER(). MySQL :

kaip konvertuoti eilutę į sveikąjį skaičių
 ROW_NUMBER() OVER ( ) 

Parodykime tai naudodami pavyzdį .

Pirmiausia sukursime lentelę pavadinimu ' Asmuo “, naudojant toliau pateiktą teiginį:

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

Toliau reikia pridėti vertes prie šios lentelės. Vykdykite žemiau pateiktą pareiškimą:

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

Tada vykdykite teiginį SELECT, kad būtų rodomi įrašai:

java konstantos
 mysql> SELECT * FROM Person; 

Gausime išvestį, kaip parodyta žemiau:

MySQL ROW_NUMBER() funkcija

Dabar galime naudoti funkciją ROW_NUMBER(), kad kiekvienam įrašui priskirtume eilės numerį, naudodami toliau pateiktą teiginį:

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

Tai duos tokią išvestį:

yra python
MySQL ROW_NUMBER() funkcija

Vėlgi, galime naudoti funkciją ROW_NUMBER(), norėdami priskirti eilės numerį kiekvienam skaidinio įrašui, naudodami toliau pateiktą teiginį:

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

Jis pateiks išvestį, kaip nurodyta toliau, kur pagal metus rasti du skirsniai (2015 ir 2016).

JAV miesto pavadinimas
MySQL ROW_NUMBER() funkcija

MySQL ROW_NUMBER() Naudojant seanso kintamąjį

Galime emuliuoti funkciją ROW_NUMBER(), kad pridėtume eilutės numerį didėjančia tvarka, naudodami seanso kintamąjį.

Vykdykite toliau pateiktą teiginį, pridedant eilutės numerį kiekvienai eilutei, kuri prasideda nuo 1:

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

Šiame teiginyje pirmiausia nurodėme seanso kintamąjį @row_number pažymėtas @prfix ir nustatyti jo reikšmę 0. Tada mes pasirinkome duomenis iš lentelės Asmuo ir padidiname kintamojo @row_number reikšmę po vieną iki kiekvienos eilutės.

Sėkmingai įvykdę užklausas, gausime toliau pateiktą išvestį:

MySQL ROW_NUMBER() funkcija

Vėlgi, sesijos kintamąjį naudosime kaip lentelę ir sujungsime jį su šaltinio lentele naudodami šį teiginį:

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

Gausime išvestį taip:

MySQL ROW_NUMBER() funkcija