Mysql ROW Numero Funzione finestra

Mysql ROW Numero Funzione finestra
All'interno di MySQL, un metodo di numero di riga () contiene un numero cronologico per ogni riga all'interno della partizione. È solo una funzione di finestra di qualche tipo. La figura delle righe inizia a 1 con la figura delle righe all'interno della partizione. Ricorda, prima della versione 8.0, MySQL non consente la funzione ROW NUMBER (), tuttavia, offre una variabile di sessione che aiuta a imitare questa funzione. Comprenderemo di più sulla funzionalità del numero di riga () di mysql in questa guida e produrremo un numero consecutivo per ogni riga della raccolta dei risultati. In MySQL, i metodi row_number () sono usati con le clausole successive:
  • La clausola over () verrà utilizzata al suo interno.
  • Ordini per clausola Disporre il risultato in base all'ordine di ordinamento della colonna menzionata.

Sintassi:

>> Seleziona col_name, row_number () over (partizione di col_name, ordine di col_name) come row_num da table_name;

Apriamo la shell client di riga di comando MySQL dalle applicazioni e digita la password per accedere.

È necessario creare una nuova tabella o utilizzare la tabella predefinita per iniziare a funzionare sulla funzione del numero di riga. Come presentato nell'immagine seguente, abbiamo una tabella "animali" nello schema "dati" con alcuni record. Prendiamo i suoi record utilizzando l'istruzione Seleziona.

>> Seleziona * dai dati.animali;

Esempio 01: row_number () usando l'ordine per clausola

Useremo la stessa tabella per elaborare alcuni esempi della funzione del numero di riga. Stiamo prendendo un esempio della funzione row_number () seguita da over (), mentre usano solo l'ordine per clausola. Abbiamo recuperato tutti i record durante la numerazione delle righe in base all'ordine di "prezzo" della colonna. Abbiamo dato il nome "Row_num" a una colonna, che memorizzerà i numeri della riga. Proviamo il comando seguente per farlo.

>> Seleziona *, row_number () over (ordine per prezzo) come row_num dai dati.animali;

Dopo aver eseguito la query sopra, possiamo vedere che le righe sono state assegnate con numeri in base all'ordine di ordinamento della colonna "Prezzo". Potresti pensare che alcuni prezzi più piccoli dovrebbero essere nella parte superiore della colonna e dovrebbe ordinare in base a questo. Ma l'ordine per clausola vede solo la prima cifra o l'alfabeto della colonna per ordinare i valori.

Eseguiamo la stessa query seguita dall'ordine per clausola mentre usi l'ordine di ordinamento della colonna "Age". L'output verrà fornita secondo la colonna "età".

>> Seleziona *, row_number () over (ordine per età) come row_num dai dati.animali;

Esempio 02: row_number () usando la partizione per clausola

Useremo l'unica partizione per clausola nella query row_number () per controllare i risultati. Abbiamo usato la query selezionata per recuperare i record seguiti da row_number () e su clausola, mentre partizioniamo la tabella in base alla colonna "Colore". Eseguire il comando aggiunto di seguito nella shell del comando.

>> Seleziona *, row_number () sopra (partizione per colore) come row_num dai dati.animali;

Nel risultato puoi vedere che la numerazione delle righe è stata assegnata in partizioni, secondo l'ordine di ordinamento dei colori. Poiché abbiamo 4 valori per il colore "nero" che richiede 4 file. Ecco perché ha numeri di quattro file a partire da 1 a 4 e viceversa.

Prova lo stesso esempio, partizionato dalla colonna "Gender" questa volta. Come sappiamo, abbiamo solo due sessi in questa tabella, ecco perché saranno formate 2 partizioni. Le femmine occupano 9 file, ecco perché ha una numerazione di righe da 1 a 9. Mentre i maschi hanno 8 valori, ecco perché ha 1 a 8.

>> Seleziona *, row_number () sopra (partizione per genere) come row_num dai dati.animali;

Esempio 03: row_number () usando la partizione di & order da

Abbiamo fatto i due esempi sopra nella riga di comando MySQL, ora è il momento di fare l'esempio row_number () nel MySQL Workbench 8.0. Quindi, apri il banco di lavoro mysql 8.0 dalle applicazioni. Collega il banco di lavoro MySQL con il database di root host locale per iniziare a funzionare.

Sul lato sinistro del banco da lavoro MySQL, troverai la barra dello schema, soffia il navigatore. In questa barra dello schema, troverai l'elenco dei database. Nell'elenco dei database, avrai tabelle diverse e procedure memorizzate, come puoi vedere nell'immagine seguente. Abbiamo tabelle diverse nel nostro database "Dati". Apriremo la tabella 'Order1' utilizzando il comando Seleziona nell'area di query per iniziare a utilizzarlo per row_number () Implementazione della funzione.

>> Seleziona * dai dati.ordine1;

La tabella "order1" è stata visualizzata nella vista griglia come mostrato di seguito. Puoi vedere che ha 4 campi di colonne, ID, regione, stato e ordine. Prenderemo tutti i record di questa tabella durante l'utilizzo dell'ordine e della partizione per clausola, entrambi allo stesso tempo.

Nell'area di query di Mysql Workbench 8.0, digitare la query sotto sfargata. La query è stata avviata con la clausola selezionata, recuperando tutti i record seguiti dalla funzione row_number () insieme alla clausola. Dopo la clausola over, abbiamo specificato la colonna "Stato" processato dalla dichiarazione "Partizione per" per dividere la tabella in partizioni secondo questa tabella. L'ordine per clausola è stato usato per organizzare la tabella in modo discendente secondo la colonna "Regione". I numeri di riga saranno conservati nella colonna "row_num". Tocca l'icona Flash per eseguire questo comando.

Verrà visualizzato il risultato sottovalutato. Prima di tutto, la tabella è stata separata in due parti secondo i valori della colonna "Stato". Successivamente, è stato presentato nell'ordine decrescente della "regione" della colonna e le partizioni sono state assegnate con i numeri di riga.

Conclusione:

Infine, abbiamo completato tutti gli esempi necessari nell'uso della funzione row_number () in MySQL Workbench e MySQL Client-Line Shell della riga di comando.