MySQL MariaDB

MySQL radnummervindu-funksjon

MySQL radnummervindu-funksjon
I MySQL inneholder en ROW NUMBER () -metode et kronologisk nummer for hver rad inne i partisjonen. Det er bare et vinduefunksjon av noe slag. Figuren av rader begynner ved 1 med figuren av rader i partisjonen. Husk, før versjon 8.0, MySQL tillater ikke ROW NUMBER () -funksjonen, men den tilbyr en sesjonsvariabel som hjelper en med å 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 resultatsamlingen. I MySQL brukes ROW_NUMBER () -metodene med de etterfølgende klausulene:

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.

5 beste arkadespill for Linux
I dag er datamaskiner seriøse maskiner som brukes til spill. Hvis du ikke kan få den nye høye poengsummen, vil du vite hva jeg mener. I dette innlegge...
Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...
Slik installerer du League Of Legends på Ubuntu 14.04
Hvis du er fan av League of Legends, er dette en mulighet for deg å prøvekjør League of Legends. Merk at LOL støttes på PlayOnLinux hvis du er en linu...