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