MySQL -rivinumeron ikkunatoiminto

Mysql Row Number Window Function



MySQL: ssä ROW NUMBER () -menetelmä sisältää kronologisen numeron jokaiselle osion sisällä olevalle riville. Se on vain jonkinlainen ikkunaominaisuus. Rivien luku alkaa 1 osion rivien kuvasta. Muista, että ennen versiota 8.0 MySQL ei salli RIVINUMERO () -toimintoa, mutta se tarjoaa istunnon muuttujan, joka auttaa jäljittelemään tätä ominaisuutta. Ymmärrämme enemmän MySQL -RIVINUMERO () -toiminnosta tässä oppaassa ja tuotamme peräkkäisen numeron jokaiselle tuloskokoelman riville. MySQL: ssä ROW_NUMBER () -menetelmiä käytetään joko seuraavien lausekkeiden kanssa:

  • Yli () -lauseketta käytetään sen sisällä.
  • ORDERS BY -lauseke järjestää tuloksen mainitun sarakkeen lajittelujärjestyksen mukaisesti.

Syntaksi:

>> VALITSE sarakkeen_nimi,ROW_NUMBER()YLI( OSITTELU Sarakkeen_nro, TILAA sarakkeen_nimi) KUTEN rivin_numero ALK taulukon_nimi;

Avaamme sovelluksista MySQL-komentoriviasiakkaat ja kirjoitamme salasanan.









Sinun on luotava uusi taulukko tai käytettävä oletustaulukkoa aloittaaksesi rivinumerotoiminnon. Kuten alla olevassa kuvassa esitetään, skeematiedoissa on taulukkoeläimiä, joissa on joitain tietueita. Haetaan sen tietueet SELECT -käskyn avulla.



>> VALITSE * ALK tiedot .eläimet;





Esimerkki 01: ROW_NUMBER () ORDER BY -lausekkeen avulla

Käytämme samaa taulukkoa kehittääksemme joitakin esimerkkejä rivinumerotoiminnosta. Otamme esimerkin ROW_NUMBER () -funktiosta, jota seuraa Over (), ja käytämme vain ORDER BY -lauseketta. Olemme hakeneet kaikki tietueet numeroidessamme rivejä sarakkeen Hintajärjestys mukaisesti. Olemme antaneet rivinumeron sarakkeelle, joka tallentaa rivin numerot. Yritetään tehdä alla oleva komento.

>> VALITSE *,ROW_NUMBER()YLI( TILAA Hinta) KUTEN rivin_numero ALK tiedot .eläimet;

Kun yllä oleva kysely suoritetaan, voimme nähdä, että riveille on annettu numeroita sarakkeen Hinta lajittelujärjestyksen mukaisesti. Saatat ajatella, että joidenkin pienempien hintojen pitäisi olla sarakkeen yläosassa ja sen pitäisi lajitella sen mukaan. Mutta ORDER BY -lauseke näkee vain sarakkeen ensimmäisen numeron tai aakkosen arvojen lajittelua varten.



Suoritetaan sama kysely, jota seuraa ORDER BY -lause, kun käytät sarakkeen Age lajittelujärjestystä. Tulos annetaan sarakkeen Ikä mukaan.

>> VALITSE *,ROW_NUMBER()YLI( TILAA Ikä) KUTEN rivin_numero ALK tiedot .eläimet;

Esimerkki 02: ROW_NUMBER () PARTITION BY -lausekkeen käyttö

Käytämme ROW_NUMBER () -kyselyn ainoaa PARTITION BY -lauseketta tulosten tarkistamiseen. Olemme käyttäneet SELECT -kyselyä tietueiden noutamiseen, joita seuraa ROW_NUMBER () - ja OVER -lauseke, samalla kun osioimme taulukon sarakkeen Väri mukaisesti. Suorita alla oleva komento komentokuorissa.

>> VALITSE *,ROW_NUMBER()YLI( OSITTELU Värin mukaan) KUTEN rivin_numero ALK tiedot .eläimet;

Tuloksena näkyy, että rivien numerointi on määritetty osioihin värien lajittelujärjestyksen mukaan. Koska meillä on 4 arvoa mustalle värille, joka kestää 4 riviä. Siksi sillä on neliriviset numerot 1-4 ja päinvastoin.

Kokeile samaa esimerkkiä, joka on ositettu sarakkeella Sukupuoli tällä kertaa. Kuten tiedämme, tässä taulukossa on vain kaksi sukupuolta, siksi muodostetaan kaksi osiota. Naarailla on 9 riviä, siksi sillä on numerointi 1-9. Miehillä on 8 arvoa, siksi sillä on 1-8.

>> VALITSE *,ROW_NUMBER()YLI( OSITTELU Sukupuolen mukaan) KUTEN rivin_numero ALK tiedot .eläimet;

Esimerkki 03: ROW_NUMBER () PARTITION BY & ORDER BY

Olemme tehneet yllä olevat kaksi esimerkkiä MySQL-komentoriviltä, ​​nyt on aika tehdä esimerkki ROW_NUMBER () MySQL Workbench 8.0: ssa. Avaa siis MySQL Workbench 8.0 sovelluksista. Aloita työskentely yhdistämällä MySQL Workbench paikalliseen isäntätietokantaan.

MySQL -työpöydän vasemmalta puolelta löydät Schema -palkin, puhalla navigaattorin. Tästä kaavapalkista löydät luettelon tietokannoista. Tietokanta -luettelossa on erilaisia ​​taulukoita ja tallennettuja menettelyjä, kuten alla olevassa kuvassa näkyy. Meillä on erilaisia ​​taulukoita tietokantamme 'data' -kohdassa. Avaamme taulukon 'order1' käyttämällä kyselyalueen SELECT -komentoa, jotta voimme aloittaa sen käytön ROW_NUMBER () -funktion toteuttamiseen.

>> VALITSE * ALK tiedot .tilaus 1;

Taulukon järjestys1 on näytetty ruudukkonäkymässä alla esitetyllä tavalla. Näet, että siinä on 4 sarakekenttää, id, Region, Status ja OrderNo. Haemme kaikki tämän taulukon tietueet käyttämällä ORDER BY- ja PARTITION BY -lausekkeita, molemmat samanaikaisesti.

Kirjoita MySQL Workbench 8.0: n kyselyalueelle alla oleva kysely. Kysely on aloitettu SELECT -lauseella, joka hakee kaikki tietueet, joita seuraa ROW_NUMBER () -funktio ja OVER -lauseke. OVER -lausekkeen jälkeen olemme määrittäneet PARTITION BY -lausekkeen sarakkeen Tila, joka jakaa taulukon osioiksi tämän taulukon mukaisesti. ORDER BY -lauseketta on käytetty taulukon järjestämiseen laskevassa muodossa sarakkeen Alue mukaan. Rivinumerot säilytetään rivinumero -sarakkeessa. Suorita tämä komento napauttamalla flash -kuvaketta.

Alla näkyvä tulos näytetään. Ensinnäkin taulukko on jaettu kahteen osaan sarakkeen Tila arvojen mukaan. Sen jälkeen se on esitetty sarakkeen ”Alue” laskevassa järjestyksessä ja osioille on annettu rivinumerot.

Johtopäätös:

Lopuksi olemme suorittaneet kaikki tarvittavat esimerkit ROW_NUMBER () -toiminnon käyttämisestä MySQL Workbenchissa ja MySQL-komentorivin Client Shellissä.