- Over () -klausulen vil blive brugt i den.
- ORDERS BY-klausul arrangerer resultatet efter sorteringsrækkefølgen i den nævnte kolonne.
Syntaks:
>> VÆLG col_name, ROW_NUMBER () OVER (PARTITION BY col_name, ORDER BY col_name) AS row_num FROM table_name;Lad os åbne MySQL-kommandolinjeklientskallen fra applikationerne og skriv adgangskoden for at logge ind.
Du skal oprette en ny tabel eller bruge standardtabellen til at begynde at arbejde på rækkenummerfunktionen. Som præsenteret i nedenstående billede har vi en tabel "dyr" i skemaet "data" med nogle poster i den. Lad os hente dets optegnelser ved hjælp af SELECT-instruktionen.
>> VÆLG * FRA data.dyr;
Eksempel 01: ROW_NUMBER () Brug af ORDER BY-klausul
Vi bruger den samme tabel til at uddybe nogle eksempler på rækkenummerfunktionen. Vi tager et eksempel på ROW_NUMBER () -funktionen efterfulgt af Over (), mens vi kun bruger ORDER BY-klausulen. Vi har hentet alle poster, mens vi nummererer rækkerne i henhold til kolonnen "Pris" -rækkefølge. Vi har givet navnet “række_numre” til en kolonne, der gemmer rækkeens numre. Lad os prøve nedenstående kommando for at gøre det.
>> VÆLG *, RAD_NUMBER () OVER (BESTIL EFTER Pris) SOM række_FRA data.dyr;Efter udførelse af ovenstående forespørgsel kan vi se, at rækkerne er tildelt numre i henhold til sorteringsrækkefølgen i kolonnen "Pris". Du tror måske, at nogle mindre priser skal være øverst i søjlen, og det skal sorteres efter det. Men ORDER BY-klausulen ser kun det første ciffer eller alfabet i kolonnen for at sortere værdier.
Lad os udføre den samme forespørgsel efterfulgt af ORDER BY-klausulen, mens vi bruger sorteringsrækkefølgen i kolonnen "Alder". Outputtet gives i henhold til kolonnen "Alder".
>> VÆLG *, RAD_NUMBER () OVER (BESTIL EFTER Alder) SOM række_FRA data.dyr;
Eksempel 02: ROW_NUMBER () Brug af PARTITION BY-klausul
Vi bruger den eneste PARTITION BY-klausul i forespørgslen ROW_NUMBER () til at kontrollere resultaterne. Vi har brugt SELECT-forespørgslen til at hente poster efterfulgt af ROW_NUMBER () og OVER-klausul, mens vi partitionerer tabellen i henhold til kolonnen "Color". Udfør den vedhæftede kommando nedenfor i kommandoskallen.
>> VÆLG *, RAD_NUMBER () OVER (DELING EFTER farve) SOM række_FRA data.dyr;Du kan i resultatet se, at nummereringen af rækker er tildelt i partitioner i henhold til farvesorteringsrækkefølgen. Da vi har 4 værdier for farve “sort”, der tager 4 rækker. Derfor har den fire række numre startende fra 1 til 4 og omvendt.
Prøv det samme eksempel, opdelt i kolonnen "Køn" denne gang. Som vi ved, har vi kun to køn i denne tabel, derfor dannes der 2 partitioner. Kvinder besætter 9 rækker, det er derfor, det har række nummerering fra 1 til 9. Mens mænd har 8 værdier, er det derfor 1 til 8.
>> VÆLG *, RAD_NUMBER () OVER (DELNING EFTER Køn) SOM række_FRA data.dyr;
Eksempel 03: ROW_NUMBER () Brug af PARTITION BY & ORDER BY
Vi har gjort ovenstående to eksempler i MySQL-kommandolinjen, nu er det tid til at gøre ROW_NUMBER () -eksemplet i MySQL Workbench 8.0. Så åbn MySQL Workbench 8.0 fra applikationerne. Forbind MySQL Workbench med den lokale værtsroddatabase for at begynde at arbejde.
På venstre side af MySQL Workbench finder du skemabjælken, blæser navigatoren. I denne skemabjælke finder du listen over databaser. Under listen over databaser vil du have forskellige tabeller og gemte procedurer, som du kan se i nedenstående billede. Vi har forskellige tabeller i vores database 'data'. Vi åbner tabellen 'rækkefølge1' ved hjælp af kommandoen SELECT i forespørgselsområdet for at begynde at bruge den til implementering af ROW_NUMBER () -funktion.
>> VÆLG * FRA data.rækkefølge1;
Tabellen "rækkefølge1" er vist i gittervisningen som vist nedenfor. Du kan se, at den har 4 kolonnefelter, id, region, status og ordrenr. Vi henter alle posterne i denne tabel, mens vi bruger ORDER BY- og PARTITION BY-klausulen, begge på samme tid.
I forespørgselsområdet for MySQL Workbench 8.0, skriv nedenstående forespørgsel. Forespørgslen er startet med SELECT-klausulen og henter alle poster efterfulgt af ROW_NUMBER () -funktionen sammen med OVER-klausulen. Efter OVER-klausulen har vi specificeret kolonnen "Status" fortsat med "PARTITION BY" -erklæringen for at opdele tabellen i partitioner i henhold til denne tabel. ORDER BY-klausulen er blevet brugt til at arrangere tabellen i faldende retning i henhold til kolonne “Region”. Rækkens numre opbevares i kolonnen “række_numre”. Tryk på flashikonet for at udføre denne kommando.
Resultatet nedenfor vises. Først og fremmest er tabellen adskilt i to dele i henhold til værdierne i kolonnen "Status". Derefter er det præsenteret i den faldende rækkefølge i kolonnen 'Region', og partitionerne er tildelt rækkenumrene.
Konklusion:
Endelig har vi gennemført alle de nødvendige eksempler i brugen af ROW_NUMBER () -funktionen i MySQL Workbench og MySQL Command-line Client Shell.