Okenska funkcija okna številke vrstice MySQL

Mysql Row Number Window Function



V MySQL metoda ROW NUMBER () vsebuje kronološko številko za vsako vrstico znotraj particije. To je samo nekakšna okna. Številka vrstic se začne pri 1 s številko vrstic znotraj particije. Ne pozabite, da pred različico 8.0 MySQL ne dovoljuje funkcije ROW NUMBER (), vendar ponuja spremenljivko seje, ki pomaga posnemati to funkcijo. V tem priročniku bomo razumeli več o funkcionalnosti MySQL ROW NUMBER () in ustvarili zaporedno številko za vsako vrstico v zbirki rezultatov. V MySQL se metode ROW_NUMBER () uporabljajo z naslednjimi klavzulami:

  • V njem bo uporabljen člen Over ().
  • Stavek ORDERS BY razvrsti rezultat glede na vrstni red razvrščanja omenjenega stolpca.

Sintaksa:

>> IZBERI col_name,ROW_NUMBER()PREKO( DELA BY ime_kol, NAROČI PO col_name) AS vrstica_številka IZ ime_tabele;

Odprimo lupino odjemalca ukazne vrstice MySQL iz aplikacij in vnesite geslo za prijavo.









Ustvariti morate novo tabelo ali uporabiti privzeto tabelo, da začnete delati na funkciji številke vrstice. Kot je prikazano na spodnji sliki, imamo v shemi tabelarne živali z nekaterimi zapisi. Pridobimo njegove zapise z uporabo ukaza SELECT.



>> IZBERI * IZ podatkov .živali;





Primer 01: ROW_NUMBER () z uporabo stavka ORDER BY

V isti tabeli bomo podrobneje opisali nekaj primerov funkcije številke vrstice. Vzamemo primer funkcije ROW_NUMBER (), ki ji sledi Over (), pri tem pa uporabljamo le člen ORDER BY. Pridobivali smo vse zapise in oštevilčili vrstice glede na stolpec Naročilo cene. Stolpcu smo dali ime row_num, v katerem bodo shranjene številke vrstice. Poskusimo narediti spodnji ukaz.

>> IZBERI *,ROW_NUMBER()PREKO( NAROČI PO Cena) AS vrstica_številka IZ podatkov .živali;

Ko izvedemo zgornjo poizvedbo, lahko vidimo, da so bile vrstice dodeljene številkam glede na vrstni red razvrščanja stolpca Cena. Morda mislite, da bi morale biti na vrhu stolpca nekatere manjše cene in bi se morale glede na to razvrstiti. Toda člen ORDER BY vidi le prvo številko ali abecedo stolpca za razvrščanje vrednosti.



Izvedimo isto poizvedbo, ki ji sledi člen ORDER BY, medtem ko uporabljamo vrstni red razvrščanja stolpca Age. Izhod bo podan glede na stolpec Starost.

>> IZBERI *,ROW_NUMBER()PREKO( NAROČI PO Starost) AS vrstica_številka IZ podatkov .živali;

Primer 02: ROW_NUMBER () Uporaba stavka PARTITION BY

Za preverjanje rezultatov bomo uporabili edini stavek PARTITION BY v poizvedbi ROW_NUMBER (). Poizvedbo SELECT smo uporabili za pridobivanje zapisov, ki jim je sledil člen ROW_NUMBER () in OVER, medtem ko smo tabelo razdelili glede na barvo stolpca. V ukazni lupini izvedite dodani spodnji ukaz.

>> IZBERI *,ROW_NUMBER()PREKO( DELA PO barvi) AS vrstica_številka IZ podatkov .živali;

Kot rezultat lahko vidite, da je oštevilčenje vrstic dodeljeno particijam glede na vrstni red razvrščanja barv. Ker imamo 4 vrednosti za črno barvo, ki zavzame 4 vrstice. Zato ima štirivrstične številke od 1 do 4 in obratno.

Poskusite z istim primerom, ki je tokrat razdeljen na stolpec Spol. Kot vemo, imamo v tej tabeli le dva spola, zato bosta nastali 2 particiji. Samice zasedajo 9 vrstic, zato ima vrstice oštevilčene od 1 do 9. Med samci ima 8 vrednosti, zato ima od 1 do 8.

>> IZBERI *,ROW_NUMBER()PREKO( DELA PO SOLU) AS vrstica_številka IZ podatkov .živali;

Primer 03: ROW_NUMBER () Uporaba funkcije PARTITION BY & ORDER BY

Zgornja dva primera smo naredili v ukazni vrstici MySQL, zdaj je čas, da naredimo primer ROW_NUMBER () v MySQL Workbench 8.0. Odprite torej MySQL Workbench 8.0 iz aplikacij. Za začetek delovanja povežite delovno mizo MySQL z lokalno korensko bazo podatkov gostitelja.

Na levi strani delovne mize MySQL boste našli vrstico sheme, pihajte navigator. V tej vrstici sheme boste našli seznam baz podatkov. Na seznamu baz podatkov boste imeli različne tabele in shranjene postopke, kot lahko vidite na spodnji sliki. V podatkovni bazi imamo različne tabele. Tabelo 'order1' bomo odprli z ukazom SELECT v območju poizvedb, da jo začnemo uporabljati za izvajanje funkcije ROW_NUMBER ().

>> IZBERI * IZ podatkov . naročilo1;

Vrstni red tabele1 je bil prikazan v mrežnem pogledu, kot je prikazano spodaj. Vidite lahko, da ima 4 polja stolpcev, id, regijo, stanje in naročilo št. Med uporabo členov ORDER BY in PARTITION BY bomo hkrati pridobili vse zapise te tabele.

V območje poizvedb MySQL Workbench 8.0 vnesite poizvedbo, prikazano spodaj. Poizvedba se je začela s stavkom SELECT in pridobila vse zapise, ki jim sledi funkcija ROW_NUMBER () skupaj s členom OVER. Po stavku OVER smo podali stolpec Status, ki ga nadaljuje stavek PARTITION BY za razdelitev tabele na particije v skladu s to tabelo. Stavek ORDER BY se uporablja za razvrščanje tabele v padajočem vrstnem redu glede na stolpec Regija. Številke vrstic bodo shranjene v stolpcu row_num. Dotaknite se ikone bliskavice, da izvedete ta ukaz.

Prikazan bo spodnji rezultat. Najprej je tabela razdeljena na dva dela glede na vrednosti stolpca Status. Po tem je bila predstavljena v padajočem vrstnem redu stolpca „Regija“, particijam pa so bile dodeljene številke vrstic.

Zaključek:

Končno smo zaključili vse potrebne primere uporabe funkcije ROW_NUMBER () v delovni mizi MySQL in odjemalcu ukazne vrstice MySQL.