MySQL MariaDB

Funkcia okna čísla riadku MySQL

Funkcia okna čísla riadku MySQL
V rámci MySQL obsahuje metóda ROW NUMBER () chronologické číslo pre každý riadok vo vnútri oddielu. Je to len nejaká funkcia okna. Obrázok riadkov sa začína na 1 číslom riadkov v rámci oddielu. Pamätajte, že pred verziou 8.0, MySQL nepovoľuje funkciu ROW NUMBER (), ponúka však premennú relácie, ktorá pomáha imitovať túto funkciu. V tejto príručke budeme rozumieť viac funkciám MySQL ROW NUMBER () a vytvoríme po sebe idúce číslo pre každý riadok v zbierke výsledkov. V MySQL sa metódy ROW_NUMBER () používajú buď s nasledujúcimi klauzulami:

Syntax:

>> VYBERTE col_name, ROW_NUMBER () NAD (PARTITION BY col_name, ORDER BY col_name) AS row_num FROM table_name;

Poďme si z aplikácií otvoriť shell klienta príkazového riadku MySQL a napísať heslo.

Ak chcete začať pracovať na funkcii čísla riadku, musíte vytvoriť novú tabuľku alebo použiť predvolenú tabuľku. Ako je znázornené na nasledujúcom obrázku, v schéme „dáta“ máme tabuľku „zvieratá“, ktorá obsahuje niekoľko záznamov. Načítajme jeho záznamy pomocou inštrukcie SELECT.

>> SELECT * FROM data.zvieratá;

Príklad 01: ROW_NUMBER () pomocou klauzuly ORDER BY

Rovnakú tabuľku použijeme na rozpracovanie niektorých príkladov funkcie čísla riadku. Berieme si príklad funkcie ROW_NUMBER (), za ktorou nasleduje Over (), pričom používame iba klauzulu ORDER BY. Načítavali sme všetky záznamy a číslovali sme riadky podľa poradia v stĺpci „Cena“. Názov sme nazvali „row_num“ stĺpcu, do ktorého sa budú ukladať čísla riadkov. Skúsime to urobiť pomocou nižšie uvedeného príkazu.

>> SELECT *, ROW_NUMBER () NAD (OBJEDNÁVKA PODĽA ceny) AKO row_num Z údajov.zvieratá;

Po vykonaní vyššie uvedeného dotazu vidíme, že riadkom boli priradené čísla podľa zoradenia stĺpca „Cena“. Možno si myslíte, že niektoré menšie ceny by mali byť v hornej časti stĺpca a podľa toho by sa mali triediť. Ale klauzula ORDER BY vidí iba prvú číslicu alebo abecedu stĺpca na zoradenie hodnôt.

Poďme vykonať ten istý dotaz nasledovaný klauzulou ORDER BY pri použití zoradenia stĺpca „Vek“. Výstup bude uvedený podľa stĺpca „Vek“.

>> SELECT *, ROW_NUMBER () NAD (OBJEDNÁVANIE PODĽA Vekov) AKO row_num FROM údajov.zvieratá;

Príklad 02: ROW_NUMBER () pomocou klauzuly PARTITION BY

Na kontrolu výsledkov použijeme jedinú klauzulu PARTITION BY v dotaze ROW_NUMBER (). Na načítanie záznamov, za ktorými sme nasledovali klauzuly ROW_NUMBER () a OVER, používame príkaz SELECT, pričom sme tabuľku rozdelili podľa stĺpca „Farba“. Vykonajte nasledujúci príkaz v príkazovom paneli.

>> SELECT *, ROW_NUMBER () OVER (PARTITION BY Color) AS row_num FROM data.zvieratá;

Na výsledku uvidíte, že číslovanie riadkov bolo v oddieloch priradené podľa poradia triedenia farieb. Pretože máme 4 hodnoty pre farbu „čierna“, ktorá má 4 riadky. Preto má štvorriadkové čísla začínajúce od 1 do 4 a naopak.

Vyskúšajte rovnaký príklad, ktorý je tentokrát rozdelený do stĺpca „Pohlavie“. Ako vieme, v tejto tabuľke máme iba dve pohlavia, preto sa vytvoria 2 oddiely. Ženy zaberajú 9 riadkov, preto majú číslovanie riadkov od 1 do 9. Zatiaľ čo muži majú 8 hodnôt, preto má 1 až 8.

>> SELECT *, ROW_NUMBER () OVER (PARTITION BY Gender) AS row_num FROM data.zvieratá;

Príklad 03: ROW_NUMBER () Použitie PARTITION BY & ORDER BY

Vyššie uvedené dva príklady sme vykonali v príkazovom riadku MySQL, teraz je čas urobiť príklad ROW_NUMBER () v MySQL Workbench 8.0. Takže otvorte MySQL Workbench 8.0 z aplikácií. Prepojte MySQL Workbench s lokálnou koreňovou databázou hostiteľa a začnite pracovať.

Na ľavej strane MySQL Workbench nájdete panel Schéma a vyfúknete navigátor. Na tomto paneli Schéma nájdete zoznam databáz. V zozname databáz budete mať rôzne tabuľky a uložené procedúry, ako vidíte na obrázku nižšie. V našej databáze máme rôzne tabuľky „údaje“. Tabuľku „order1“ otvoríme pomocou príkazu SELECT v oblasti dotazu, aby sme ju začali používať na implementáciu funkcie ROW_NUMBER ().

>> SELECT * FROM data.objednávka1;

Tabuľka „order1“ sa zobrazila v mriežke, ako je uvedené nižšie. Môžete vidieť, že má 4 stĺpcové polia, id, Region, Status a OrderNo. Budeme načítať všetky záznamy tejto tabuľky pri použití klauzúly ORDER BY a PARTITION BY, obidva súčasne.

V oblasti dotazov na MySQL Workbench 8.0, zadajte dotaz zobrazený nižšie. Dotaz bol spustený s klauzulou SELECT, načítaním všetkých záznamov nasledovaných funkciou ROW_NUMBER () spolu s klauzulou OVER. Po klauzule OVER sme zadali stĺpec „Status“, ktorý nasleduje príkazom „PARTITION BY“, aby sa tabuľka rozdelila na oddiely podľa tejto tabuľky. Klauzula ORDER BY sa používa na zostupné usporiadanie tabuľky podľa stĺpca „Region“. Čísla riadkov sa zachovajú v stĺpci „počet_riadkov“. Klepnutím na ikonu blesku vykonáte tento príkaz.

Zobrazí sa výsledok zobrazený nižšie. Najskôr bola tabuľka rozdelená na dve časti podľa hodnôt stĺpca „Stav“. Potom je uvedený v zostupnom poradí stĺpca „Region“ a oddielom boli priradené čísla riadkov.

Záver:

Nakoniec sme dokončili všetky potrebné príklady používania funkcie ROW_NUMBER () v prostredí MySQL Workbench a klientskom prostredí príkazového riadku MySQL.

Top 5 ergonomických produktov pre počítačové myši pre Linux
Spôsobuje dlhodobé používanie počítača bolesť zápästia alebo prstov? Trpíte stuhnutými kĺbmi a neustále si musíte podávať ruky? Cítite pálivú bolesť z...
Ako zmeniť nastavenie myši a touchpadu pomocou systému Xinput v systéme Linux
Väčšina distribúcií systému Linux sa štandardne dodáva s knižnicou „libinput“ na spracovanie vstupných udalostí v systéme. Dokáže spracovať vstupné ud...
S ovládaním pomocou myši X-Mouse môžete tlačidlá myši premapovať odlišne pre iný softvér
Možno budete potrebovať nástroj, ktorý by mohol zmeniť ovládanie myši pri každej aplikácii, ktorú používate. Ak je to váš prípad, môžete vyskúšať apli...