logo

MySQL ROW_NUMBER() funksjon

ROW_NUMBER()-funksjonen i MySQL brukes til å returnere sekvensnummer for hver rad innenfor sin partisjon. Det er en slags vindusfunksjon. Radnummeret starter fra 1 til antall rader i partisjonen.

Det skal bemerkes at MySQL ikke støtter funksjonen ROW_NUMBER() før versjon 8.0, men de gir en øktvariabel som lar oss etterligne denne funksjonen.

Syntaks

Følgende er den grunnleggende syntaksen for å bruke ROW_NUMBER() i MySQL :

hvor mye veier kat timpf
 ROW_NUMBER() OVER ( ) 

La oss demonstrere det ved å bruke et eksempel .

Først skal vi lage en tabell som heter ' Person ' ved å bruke utsagnet nedenfor:

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

Deretter er det nødvendig å legge til verdier i denne tabellen. Utfør setningen nedenfor:

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

Deretter kjører du SELECT-setningen for å vise postene:

hvordan konvertere streng til heltall
 mysql> SELECT * FROM Person; 

Vi vil få utgangen, som vist nedenfor:

Skuespiller Rekha
MySQL ROW_NUMBER() funksjon

Nå kan vi bruke ROW_NUMBER()-funksjonen til å tilordne et sekvensnummer for hver post ved å bruke setningen nedenfor:

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

Det vil gi følgende utgang:

MySQL ROW_NUMBER() funksjon

Igjen kan vi bruke funksjonen ROW_NUMBER() til å tilordne et sekvensnummer for hver post i en partisjon ved å bruke setningen nedenfor:

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

Det vil gi utdata som nedenfor der to partisjoner funnet basert på år (2015 og 2016).

hiba bukhari
MySQL ROW_NUMBER() funksjon

MySQL ROW_NUMBER() ved hjelp av øktvariabel

Vi kan emulere ROW_NUMBER()-funksjonen for å legge til et radnummer i økende rekkefølge ved å bruke øktvariabelen.

Utfør setningen nedenfor som legger til radnummeret for hver rad, som starter fra 1:

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

I denne setningen har vi først spesifisert sesjonsvariabelen @radnummer angitt med @prfix og sett verdien 0. Deretter har vi valgt dataene fra tabellen Person og øker verdien for variabelen @radnummer med én til hver rad.

Etter vellykket utførelse av spørringene, vil vi få utdata som nedenfor:

MySQL ROW_NUMBER() funksjon

Igjen skal vi bruke en øktvariabel som en tabell og krysse den med kildetabellen ved å bruke følgende setning:

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

Vi vil få utgangen som nedenfor:

MySQL ROW_NUMBER() funksjon