MySQL MariaDB

MySQL række nummervindue funktion

MySQL række nummervindue funktion
Inden for MySQL indeholder en ROW NUMBER () -metode et kronologisk nummer for hver række inde i partitionen. Det er bare et vinduesfunktion af en slags. Rækketallet begynder ved 1 med tallet på rækker i partitionen. Husk, før version 8.0, MySQL tillader ikke funktionen ROW NUMBER (), men den tilbyder en sessionsvariabel, der hjælper en med at efterligne denne funktion. Vi vil forstå mere om MySQL ROW NUMBER () -funktionalitet gennem denne guide og producere et fortløbende nummer for hver række i resultatsamlingen. I MySQL anvendes ROW_NUMBER () -metoderne med enten de følgende klausuler:

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.

Mus Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
De fleste Linux-distributioner leveres som standard med "libinput" -biblioteket til at håndtere inputhændelser på et system. Det kan behandle inputhæn...
Mus Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Måske har du brug for et værktøj, der kan ændre din muses kontrol med hver applikation, du bruger. Hvis dette er tilfældet, kan du prøve en applikatio...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har for nylig læst om Microsoft Sculpt Touch trådløs mus og besluttede at købe den. Efter at have brugt det et stykke tid besluttede jeg at dele m...