logo

Funkcia MySQL ROW_NUMBER().

Funkcia ROW_NUMBER() v MySQL sa používa na vrátenie poradové číslo pre každý riadok v rámci jeho oddielu. Je to druh funkcie okna. Číslo riadku začína od 1 do počtu riadkov prítomných v oddiele.

Je potrebné poznamenať, že MySQL nepodporuje funkciu ROW_NUMBER() pred verziou 8.0, ale poskytuje premenná relácie čo nám umožňuje napodobniť túto funkciu.

Syntax

Nasleduje základná syntax na použitie ROW_NUMBER() v MySQL :

java matematika.min
 ROW_NUMBER() OVER ( ) 

Ukážme si to na príklade .

Najprv vytvoríme tabuľku s názvom ' Osoba “ pomocou nižšie uvedeného vyhlásenia:

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

Ďalej je potrebné pridať hodnoty do tejto tabuľky. Vykonajte nasledujúce vyhlásenie:

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

Potom vykonajte príkaz SELECT na zobrazenie záznamov:

vstup java
 mysql> SELECT * FROM Person; 

Získame výstup, ako je uvedené nižšie:

bstrom a b strom
Funkcia MySQL ROW_NUMBER().

Teraz môžeme použiť funkciu ROW_NUMBER() na priradenie poradového čísla pre každý záznam pomocou nižšie uvedeného príkazu:

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

Poskytne nasledujúci výstup:

Funkcia MySQL ROW_NUMBER().

Opäť môžeme použiť funkciu ROW_NUMBER() na priradenie poradového čísla pre každý záznam v rámci oddielu pomocou nižšie uvedeného príkazu:

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

Poskytne výstup, ako je uvedené nižšie, kde sa našli dve oblasti na základe roku (2015 a 2016).

celé číslo na reťazec
Funkcia MySQL ROW_NUMBER().

MySQL ROW_NUMBER() pomocou premennej relácie

Pomocou premennej relácie môžeme emulovať funkciu ROW_NUMBER() na pridanie čísla riadku v rastúcom poradí.

Vykonajte nižšie uvedený príkaz a pridajte číslo riadku pre každý riadok, ktorý začína od 1:

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

V tomto vyhlásení sme najprv špecifikovali premennú relácie @číslo_riadku označené @prfix a jeho hodnotu nastavíme na 0. Následne vyberieme údaje z tabuľky Osoba a zvýšime hodnotu premennej @číslo_riadku o jeden na každý riadok.

Po úspešnom vykonaní dotazov dostaneme výstup, ako je uvedené nižšie:

Funkcia MySQL ROW_NUMBER().

Opäť použijeme premennú relácie ako tabuľku a prepojíme ju so zdrojovou tabuľkou pomocou nasledujúceho príkazu:

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

Získame výstup, ako je uvedené nižšie:

Funkcia MySQL ROW_NUMBER().