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