MySQL sorszám ablak funkció

Mysql Row Number Window Function



A MySQL -en belül a ROW NUMBER () metódus kronológiai számot tartalmaz a partíció minden sorához. Ez csak egy ablak jellegzetessége. A sorok száma 1 -nél kezdődik a partíción belüli sorok számával. Ne feledje, hogy a 8.0 verzió előtt a MySQL nem engedélyezi a ROW NUMBER () függvényt, azonban olyan munkamenet -változót kínál, amely segíti ezt a funkciót. Ebben az útmutatóban többet fogunk megérteni a MySQL SORSZÁM () funkcionalitásról, és az eredménygyűjtemény minden sorához egymás utáni számot készítünk. A MySQL -ben a ROW_NUMBER () metódusokat a következő záradékokkal használják:

  • Az Over () záradékot fogják használni benne.
  • RENDELÉSEK Záradék szerint rendezze az eredményt az említett oszlop rendezési sorrendje szerint.

Szintaxis:

>> SELECT oszlop_neve,ROW_NUMBER()FELETT( PARTITION Oszlopnév szerint, RENDEZÉS oszlop_neve) MINT sor_száma TÓL TŐL tábla_neve;

Nyissuk meg a MySQL parancssori ügyfélhéjat az alkalmazásokból, és írjuk be a bejelentkezéshez szükséges jelszót.









Létre kell hoznia egy új táblát, vagy az alapértelmezett táblát kell használnia a sorszám funkció használatához. Amint az alábbi képen látható, a séma adataiban van egy táblázat állata, benne néhány rekord. Lekérjük a rekordjait a SELECT utasítás segítségével.



>> SELECT * TÓL TŐL adat .állatok;





Példa 01: ROW_NUMBER () ORDER BY záradék használata

Ugyanezt a táblázatot fogjuk használni a sorszám -függvény néhány példájának kidolgozásához. Példát veszünk a ROW_NUMBER () függvényre, majd az Over () függvényre, miközben csak az ORDER BY záradékot használjuk. Az összes rekordot lehívtuk, miközben számoztuk a sorokat az Ár sorrend oszlop szerint. A row_num nevet adtuk egy oszlopnak, amely tárolja a sor számát. Próbáljuk meg az alábbi parancsot.

>> SELECT *,ROW_NUMBER()FELETT( RENDEZÉS Ár) MINT sor_száma TÓL TŐL adat .állatok;

A fenti lekérdezés végrehajtása után láthatjuk, hogy a sorok számokkal vannak ellátva az Ár oszlop rendezési sorrendje szerint. Azt gondolhatja, hogy néhány kisebb árnak az oszlop tetején kell lennie, és ennek megfelelően kell rendeznie. De a ORDER BY záradék csak az oszlop első számjegyét vagy ábécéjét látja az értékek rendezéséhez.



Végezzük el ugyanazt a lekérdezést, amelyet az ORDER BY záradék követ, miközben az Age oszlop rendezési sorrendjét használjuk. A kimenet az Age oszlop szerint lesz megadva.

>> SELECT *,ROW_NUMBER()FELETT( RENDEZÉS Kor) MINT sor_száma TÓL TŐL adat .állatok;

Példa 02: ROW_NUMBER () A PARTITION BY záradék használata

Az eredmények ellenőrzéséhez a ROW_NUMBER () lekérdezés egyetlen PARTITION BY záradékát fogjuk használni. A SELECT lekérdezést használtuk a rekordok lekérésére, amelyet a ROW_NUMBER () és az OVER záradék követ, miközben a táblázatot a Szín oszlop szerint particionáljuk. Futtassa az alábbi függelék parancsot a parancshéjban.

>> SELECT *,ROW_NUMBER()FELETT( PARTITION Szín szerint) MINT sor_száma TÓL TŐL adat .állatok;

Látható az eredményen, hogy a sorok számozása partíciókhoz van rendelve, a színek rendezési sorrendje szerint. Mivel a fekete színnek 4 értéke van, amelyek 4 sort foglalnak el. Ezért van négysoros száma 1-től 4-ig, és fordítva.

Próbálja ki ugyanazt a példát, amelyet ezúttal a Nemek oszlop tagol. Mint tudjuk, ebben a táblázatban csak két nem található, ezért 2 partíció jön létre. A nőstények 9 sort foglalnak el, ezért van sorszámozása 1 -től 9 -ig. Míg a hímek 8 értékkel rendelkeznek, ezért 1-8.

>> SELECT *,ROW_NUMBER()FELETT( PARTITION A nemek szerint) MINT sor_száma TÓL TŐL adat .állatok;

Példa 03: ROW_NUMBER () A PARTITION BY & ORDER BY használata

A fenti két példát a MySQL parancssorban végeztük el, most itt az ideje, hogy megcsináljuk a ROW_NUMBER () példát a MySQL Workbench 8.0-ban. Tehát nyissa meg a MySQL Workbench 8.0 alkalmazást. A munka megkezdéséhez csatlakoztassa a MySQL Workbench -t a helyi gazdagyökér -adatbázishoz.

A MySQL Munkapad bal oldalán találja a Séma sávot, fújja a navigátort. Ebben a sémasávban megtalálja az adatbázisok listáját. Az adatbázisok listája alatt különböző táblázatok és tárolt eljárások lesznek, amint az az alábbi képen látható. Az adatbázisunkban az „adatok” különböző táblázatokkal rendelkezik. Megnyitjuk a 'order1' táblázatot a lekérdezési terület SELECT parancsával, hogy elkezdhessük használni a ROW_NUMBER () függvény megvalósításához.

>> SELECT * TÓL TŐL adat .rend1;

A táblázat sorrendje1 az alábbi ábrán látható a rács nézetben. Láthatja, hogy 4 oszlopmezővel rendelkezik, azonosító, régió, állapot és rendelési szám. A táblázat összes rekordját lekérjük, miközben a ORDER BY és a PARTITION BY záradékot használjuk, mindkettőt egyszerre.

A MySQL Workbench 8.0 lekérdezési területére írja be az alább látható lekérdezést. A lekérdezés a SELECT záradékkal indult, lekérve az összes rekordot, amelyet a ROW_NUMBER () függvény követ az OVER záradékkal együtt. Az OVER záradék után megadtuk a PARTITION BY utasítással folytatott Állapot oszlopot, hogy a táblázatot a táblázat szerint partíciókra osszuk. A ORDER BY záradékot arra használtuk, hogy a táblát a Régió oszlop szerint csökkenő módon rendezzük el. A sorok a sor_száma oszlopban maradnak. A parancs végrehajtásához érintse meg a flash ikont.

Az alább látható eredmény jelenik meg. Először is, a táblázat az Állapot oszlop értékeinek megfelelően két részre lett osztva. Ezt követően a „Régió” oszlop csökkenő sorrendjében mutatták be, és a partíciókat a sorszámokkal látták el.

Következtetés:

Végül elkészítettük az összes szükséges példát a ROW_NUMBER () függvény használatához a MySQL Workbench és a MySQL parancssori ügyfélhéjban.