logo

Funzione MySQL ROW_NUMBER()

La funzione ROW_NUMBER() in MySQL viene utilizzata per restituire il file numero sequenziale per ogni riga all'interno della sua partizione. È una specie di funzione finestra. Il numero di riga inizia da 1 al numero di righe presenti nella partizione.

È da notare che MySQL non supporta la funzione ROW_NUMBER() prima della versione 8.0, ma fornisce un variabile di sessione che ci permette di emulare questa funzione.

Sintassi

Di seguito è riportata la sintassi di base per utilizzare ROW_NUMBER() MySQL :

codice c ass
 ROW_NUMBER() OVER ( ) 

Dimostriamolo utilizzando un esempio .

Per prima cosa creeremo una tabella denominata ' Persona ' utilizzando la seguente istruzione:

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

Successivamente, è necessario aggiungere valori a questa tabella. Esegui la seguente istruzione:

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

Successivamente, esegui l'istruzione SELECT per visualizzare i record:

ariano khan
 mysql> SELECT * FROM Person; 

Otterremo l'output, come mostrato di seguito:

Funzione MySQL ROW_NUMBER()

Ora possiamo utilizzare la funzione ROW_NUMBER() per assegnare un numero di sequenza per ciascun record utilizzando l'istruzione seguente:

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

Fornirà il seguente output:

ops concetti in Java
Funzione MySQL ROW_NUMBER()

Ancora una volta, possiamo utilizzare la funzione ROW_NUMBER() per assegnare un numero di sequenza per ciascun record all'interno di una partizione utilizzando l'istruzione seguente:

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

Fornirà l'output come di seguito dove sono state trovate due partizioni in base all'anno (2015 e 2016).

array in Java
Funzione MySQL ROW_NUMBER()

MySQL ROW_NUMBER() utilizzando la variabile di sessione

Possiamo emulare la funzione ROW_NUMBER() per aggiungere un numero di riga in ordine crescente utilizzando la variabile di sessione.

Esegui l'istruzione seguente che aggiunge il numero di riga per ogni riga, che inizia da 1:

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

In questa istruzione, dobbiamo prima specificare la variabile di sessione @numero_riga indicato da @prfix e impostarne il valore 0. Successivamente, abbiamo selezionato i dati dalla tabella Persona e aumentato il valore della variabile @row_number di uno per ogni riga.

Dopo aver eseguito con successo le query, otterremo l'output come di seguito:

Funzione MySQL ROW_NUMBER()

Ancora una volta, utilizzeremo una variabile di sessione come tabella e la uniremo alla tabella di origine utilizzando la seguente istruzione:

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

Otterremo l'output come di seguito:

Funzione MySQL ROW_NUMBER()