Mysql radnummer vindufunksjon

Mysql radnummer vindufunksjon
Innenfor mysql inneholder en radnummer () -metode et kronologisk tall for hver rad inne i partisjonen. Det er bare et vindusfunksjon av noe slag. Radenes figur begynner på 1 med figuren av rader i partisjonen. Husk, før versjon 8.0, MySQL tillater ikke radnummer () -funksjonen, men den tilbyr en øktvariabel som hjelper en å etterligne denne funksjonen. Vi vil forstå mer om MySQL Row Number () Funksjonalitet gjennom denne guiden og produsere et påfølgende nummer for hver rad i Resultatkolleksjonen. I MySQL brukes Row_number () -metodene med enten de påfølgende klausulene:
  • Over () -klausulen vil bli brukt i den.
  • Bestillinger med klausul Arranger resultatet i henhold til sorteringsrekkefølgen på nevnt kolonne.

Syntaks:

>> velg col_name, row_number () over (partisjon av col_name, ordre av col_name) som row_num fra tabell_name;

La oss åpne MySQL-kommandolinjeklientskallet fra applikasjonene og skriv inn passordet for å logge inn.

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 det. La oss hente postene ved hjelp av Select -instruksjonen.

>> Velg * fra data.dyr;

Eksempel 01: ROW_NUMBER () Bruke ordre etter 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 ordren etter klausul. Vi har hentet alle postene mens vi nummererer radene i henhold til kolonnen "Price" -ordren. Vi har gitt navnet "Row_num" til en kolonne, som vil lagre radens tall. La oss prøve kommandoen nedenfor for å gjøre det.

>> Velg *, ROW_NUMBER () over (bestill etter pris) som ROW_NUM fra data.dyr;

Når vi utfører spørringen ovenfor, kan vi se at radene har blitt tildelt med tall i henhold til sorteringsrekkefølgen til kolonnen "Pris". Du tror kanskje at noen mindre priser skal være på toppen av kolonnen, og den skal sortere i henhold til det. Men ordren etter leddet ser bare det første sifferet eller alfabetet i kolonnen for å sortere verdier.

La oss utføre den samme spørringen etterfulgt av ordren etter leddet mens du bruker sorteringens rekkefølge for kolonnen "Age". Utgangen vil bli gitt i henhold til kolonnen "alder".

>> Velg *, ROW_NUMBER () Over (Bestilling etter alder) som ROW_NUM fra data.dyr;

Eksempel 02: ROW_NUMBER () Bruke Partition by Clause

Vi vil bruke den eneste partisjonen etter klausul i Row_number () -spørringen for å sjekke resultatene. Vi har brukt Select Query for å hente postene etterfulgt av ROW_Number () og over leddet, mens vi deler tabellen i henhold til kolonnen "Color". Utfør vedlagte kommandoen nedenfor i kommandoskallet.

>> velg *, row_number () over (partisjon etter farge) som rad_num fra data.dyr;

Du kan se i resultatet at nummereringen av rader er blitt tildelt i partisjoner, i henhold til fargesorteringsrekkefølgen. Som vi har 4 verdier for farge "svart" som tar 4 rader. Derfor har det fått fire-rads tall fra 1 til 4 og omvendt.

Prøv det samme eksemplet, partisjonert av kolonnen "kjønn" denne gangen. Som vi vet har vi bare to kjønn i denne tabellen, det er grunnen til at to partisjoner blir dannet. Kvinner okkuperer 9 rader, det er derfor den har radnummerering fra 1 til 9. Mens hannene har 8 verdier, er det derfor den har 1 til 8.

>> velg *, row_number () over (partisjon etter kjønn) som row_num fra data.dyr;

Eksempel 03: ROW_NUMBER () Bruke partisjon av & bestill av

Vi har gjort de to ovennevnte 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 med den lokale vertsrotdatabasen for å begynne å jobbe.

På venstre side av MySQL Workbench, finner du skjemadinjen, blåser navigatøren. I denne skjemafesten finner du listen over databaser. Under databaserlisten vil du ha forskjellige tabeller og lagrede prosedyrer, som du kan se i bildet nedenfor. Vi har forskjellige tabeller i databasene våre 'Data'. Vi åpner tabellen 'Order1' ved hjelp av SELECT -kommandoen i spørringsområdet for å begynne å bruke den for ROW_NUMBER () Funksjonsimplementering.

>> Velg * fra data.ordre1;

Tabellen “Order1” er vist i rutenettet som vist nedenfor. Du kan se at den har 4 kolonnefelt, ID, region, status og ordreno. Vi vil hente alle postene til denne tabellen mens vi bruker ordren etter og partisjon etter klausul, begge samtidig.

I spørringsområdet til MySQL Workbench 8.0, skriv inn den underavspillingsspørsmålet. Spørringen er startet med Select Clause, og henter alle postene etterfulgt av ROW_Number () -funksjonen sammen med Over -leddet. Etter Over -leddet har vi spesifisert kolonnen "Status" som er videreført med "Partisjonen etter" -uttalelsen for å dele opp tabellen i partisjoner i henhold til denne tabellen. Bestillingen BY -leddet er brukt til å arrangere tabellen på synkende måte i henhold til kolonne “Region”. Radnumrene vil bli holdt i kolonnen "Row_num". Trykk på Flash -ikonet for å utføre denne kommandoen.

Det nedenfor-spillede resultatet vil bli vist. Først av alt har tabellen blitt adskilt i to deler i henhold til verdiene av kolonne “Status”. Etter det har det blitt presentert i den synkende rekkefølgen av kolonne 'region', og partisjonene er tildelt med radnumrene.

Konklusjon:

Til slutt har vi fullført alle nødvendige eksempler ved bruk.