- Over () -klausulen vil bli brukt i den.
- ORDERS BY-ledd ordner resultatet i henhold til sorteringsrekkefølgen i nevnte kolonne.
Syntaks:
>> VELG kol.navn, ROW_NUMBER () OVER (DELING BY col_name, ORDER BY col_name) AS row_num FROM table_name;La oss åpne MySQL-kommandolinjeklientskallet fra applikasjonene 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 tabell "dyr" i skjemaet "data" med noen poster i den. La oss hente postene ved hjelp av SELECT-instruksjonen.
>> VELG * FRA data.dyr;
Eksempel 01: ROW_NUMBER () Bruker ORDER BY-klausul
Vi vil bruke den samme tabellen for å utdype noen eksempler på radnummerfunksjonen. Vi tar et eksempel på ROW_NUMBER () -funksjonen etterfulgt av Over (), mens vi bare bruker ORDER BY-setningen. Vi har hentet alle postene mens vi nummererer radene i henhold til kolonnen "Pris". Vi har gitt navnet “radnummer” til en kolonne som vil lagre radens nummer. La oss prøve kommandoen nedenfor for å gjøre det.
>> VELG *, ROW_NUMBER () OVER (BESTILL AV PRIS) SOM radnummer FRA data.dyr;Når du utfører spørringen ovenfor, kan vi se at radene er tildelt tall i henhold til sorteringsrekkefølgen i kolonnen "Pris". Du tror kanskje at noen mindre priser skal være på toppen av kolonnen, og det bør sorteres etter det. Men ORDER BY-leddet 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-setningen mens vi bruker sorteringsrekkefølgen for kolonnen "Alder". Resultatet vil bli gitt i henhold til kolonnen "Alder".
>> SELECT *, ROW_NUMBER () OVER (ORDER BY Age) AS row_num FROM data.dyr;
Eksempel 02: ROW_NUMBER () Bruker PARTITION BY-klausul
Vi bruker den eneste delen PARTITION BY i spørringen ROW_NUMBER () for å sjekke 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 den vedlagte kommandoen nedenfor i kommandoskallet.
>> SELECT *, ROW_NUMBER () OVER (PARTITION BY Color) AS row_num FROM data.dyr;Du kan se i resultatet at nummereringen av rader er tildelt i partisjoner, i henhold til fargesorteringsrekkefølgen. Siden vi har 4 verdier for fargen “Svart” som tar 4 rader. Det er derfor det har fireradetall som starter fra 1 til 4 og omvendt.
Prøv det samme eksemplet, delt av kolonnen "Kjønn" denne gangen. Som vi vet, har vi bare to kjønn i denne tabellen, det er derfor to partisjoner vil bli dannet. Kvinner har 9 rader, det er derfor den har radnummerering fra 1 til 9. Mens menn har 8 verdier, er det derfor den har 1 til 8.
>> SELECT *, ROW_NUMBER () OVER (PARTITION BY Gender) AS row_num FROM data.dyr;
Eksempel 03: ROW_NUMBER () Bruker PARTITION BY & ORDER BY
Vi har gjort de ovennevnte to eksemplene 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 applikasjonene. Koble MySQL Workbench til den lokale vertsrotdatabasen for å begynne å jobbe.
På venstre side av MySQL Workbench finner du skjema-linjen, blås navigatoren. I denne skjemafeltet 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 'data'. Vi åpner tabellen 'order1' ved å bruke SELECT-kommandoen i spørringsområdet for å begynne å bruke den til implementering av ROW_NUMBER () -funksjon.
>> VELG * FRA data.ordre1;
Tabellen "ordre1" er vist i rutenettvisningen som vist nedenfor. Du kan se at den har 4 kolonnefelt, id, region, status og ordrenr. Vi vil hente alle postene i denne tabellen mens vi bruker ORDER BY- og PARTITION BY-setningen, begge samtidig.
I søkeområdet til MySQL Workbench 8.0, skriv spørringen nedenfor. Søket er startet med SELECT-setningen, og henter alle postene etterfulgt av ROW_NUMBER () -funksjonen sammen med OVER-setningen. Etter OVER-klausulen har vi spesifisert kolonnen "Status" fortsatt med "PARTITION BY" -uttalelsen for å dele tabellen i partisjoner i henhold til denne tabellen. ORDER BY-setningen er brukt til å ordne tabellen i fallende retning i henhold til kolonne "Region". Radnumrene vil bli holdt i kolonnen "radnummer". Trykk på blitsikonet for å utføre denne kommandoen.
Resultatet nedenfor vises. Først og fremst har tabellen blitt adskilt i to deler i henhold til verdiene i kolonnen "Status". Etter det har den blitt presentert i fallende rekkefølge i kolonnen 'Region' og partisjonene er tildelt radnumrene.
Konklusjon:
Til slutt har vi fullført alle nødvendige eksempler i bruk av ROW_NUMBER () -funksjonen i MySQL Workbench og MySQL Command-line Client Shell.