MySQL radnummer vindu funksjon

Mysql Row Number Window Function



Innen MySQL inneholder en ROW NUMBER () -metode et kronologisk tall for hver rad inne i partisjonen. Det er bare en slags vindusfunksjon. Figuren med rader begynner med 1 med figuren av rader i partisjonen. Husk at før versjon 8.0 tillater ikke MySQL ROW NUMBER () -funksjonen, men den tilbyr en øktvariabel som hjelper en å etterligne denne funksjonen. Vi vil forstå mer om MySQL ROW NUMBER () -funksjonalitet gjennom denne veiledningen og produsere et nummer på rad for hver rad i resultatsamlingen. I MySQL brukes ROW_NUMBER () -metodene med enten de påfølgende klausulene:

  • Over () -klausulen vil bli brukt i den.
  • ORDERS BY -ledd ordner resultatet i henhold til sorteringsrekkefølgen til nevnte kolonne.

Syntaks:

>> PLUKKE UT col_name,ROW_NUMBER()OVER( SKILLEVEGG AV col_name, REKKEFØLGE ETTER col_name) SOM radnummer FRA tabellnavn;

La oss åpne MySQL kommandolinjeklientskall fra programmene og skrive inn passordet for å logge på.









Du må opprette en ny tabell eller bruke standardtabellen for å begynne å jobbe med radnummerfunksjonen. Som presentert i bildet nedenfor, har vi en tabelldyr i skjemadataene med noen poster i den. La oss hente postene ved hjelp av SELECT -instruksjonen.



>> PLUKKE UT * FRA data .dyr;





Eksempel 01: ROW_NUMBER () Ved bruk av ORDER BY -klausul

Vi vil bruke den samme tabellen til å utdype noen eksempler på radnummerfunksjonen. Vi tar et eksempel på funksjonen ROW_NUMBER () etterfulgt av Over (), mens vi bare bruker ORDER BY -leddet. Vi har hentet alle postene mens vi har nummerert radene i henhold til kolonnen Prisrekkefølge. Vi har gitt navnet row_num til en kolonne, som lagrer radens tall. La oss prøve kommandoen nedenfor for å gjøre det.

>> PLUKKE UT *,ROW_NUMBER()OVER( REKKEFØLGE ETTER Pris) SOM radnummer FRA data .dyr;

Ved å utføre spørringen ovenfor kan vi se at radene er tilordnet tall i henhold til sorteringsrekkefølgen for kolonnen Pris. Du tror kanskje at noen mindre priser bør ligge øverst i kolonnen, og den bør sorteres etter det. Men ORDER BY -setningen ser bare det første sifferet eller alfabetet i kolonnen for å sortere verdier.



La oss utføre den samme spørringen etterfulgt av ORDER BY -leddet mens du bruker sorteringsrekkefølgen for kolonnen Alder. Utdataene vil bli gitt i henhold til kolonnen Alder.

>> PLUKKE UT *,ROW_NUMBER()OVER( REKKEFØLGE ETTER Alder) SOM radnummer FRA data .dyr;

Eksempel 02: ROW_NUMBER () Bruke PARTITION BY klausul

Vi bruker den eneste PARTITION BY -leddet i ROW_NUMBER () -spørringen for å kontrollere resultatene. Vi har brukt SELECT -spørringen for å hente postene etterfulgt av ROW_NUMBER () og OVER -setningen, mens vi partisjonerer tabellen i henhold til kolonnen Color. Utfør kommandoen under i kommandoskallet.

>> PLUKKE UT *,ROW_NUMBER()OVER( SKILLEVEGG Etter farge) SOM radnummer FRA data .dyr;

Du kan se i resultatet at nummereringen av rader er tilordnet i partisjoner, i henhold til fargesorteringsrekkefølgen. Siden vi har 4 verdier for farge svart som tar 4 rader. Derfor har den fire-raders tall fra 1 til 4 og omvendt.

Prøv det samme eksemplet, delt i kolonnen Kjønn denne gangen. Som vi vet, har vi bare to kjønn i denne tabellen, derfor vil det bli dannet 2 partisjoner. Hunnene opptar 9 rader, derfor har den radnummerering fra 1 til 9. Mens menn har 8 verdier, har den derfor 1 til 8.

>> PLUKKE UT *,ROW_NUMBER()OVER( SKILLEVEGG AV Kjønn) SOM radnummer FRA data .dyr;

Eksempel 03: ROW_NUMBER () Bruke PARTITION BY & ORDER BY

Vi har gjort de to eksemplene ovenfor i MySQL-kommandolinjen, nå er det på tide å gjøre ROW_NUMBER () -eksemplet i MySQL Workbench 8.0. Så åpne MySQL Workbench 8.0 fra programmene. Koble MySQL Workbench til den lokale vertsrotdatabasen for å begynne å jobbe.

På venstre side av MySQL Workbench finner du skjemastangen, blåse i navigatoren. I denne skjemalinjen finner du listen over databaser. Under databaselisten vil du ha forskjellige tabeller og lagrede prosedyrer, som du kan se på bildet nedenfor. Vi har forskjellige tabeller i databasen vår ‘data’. Vi åpner tabellen ‘ordre1’ ved hjelp av SELECT -kommandoen i søkeområdet for å begynne å bruke den for funksjonen ROW_NUMBER ().

>> PLUKKE UT * FRA data .ordre1;

Tabellrekkefølgen1 har blitt vist i rutenettet som vist nedenfor. Du kan se at den har fire kolonnefelt, id, region, status og bestillingsnr. Vi henter alle postene i denne tabellen mens vi bruker ORDER BY og PARTITION BY -setningen, begge samtidig.

I søkeområdet i MySQL Workbench 8.0 skriver du inn spørringen nedenfor. Spørringen har blitt startet med SELECT -setningen, og hentet alle postene etterfulgt av funksjonen ROW_NUMBER () sammen med OVER -setningen. Etter OVER -klausulen har vi spesifisert kolonnen Status videreført av PARTITION BY -setningen for å dele tabellen i partisjoner i henhold til denne tabellen. ORDER BY -leddet brukes til å ordne tabellen synkende i henhold til kolonne Region. Radnumrene beholdes i kolonnen rad_nummer. Trykk på blitsikonet for å utføre denne kommandoen.

Resultatet nedenfor vises. Først og fremst har tabellen blitt skilt i to deler i henhold til verdiene i kolonne Status. Etter det har den blitt presentert i den synkende rekkefølgen i kolonnen ‘Region’, og partisjonene har blitt tildelt radnummerene.

Konklusjon:

Til slutt har vi fullført alle nødvendige eksempler for bruk av funksjonen ROW_NUMBER () i MySQL Workbench og MySQL Command-line Client Shell.