Ang MySQL Row Number Window Function

Mysql Row Number Window Function



Sa loob ng MySQL, isang ROW NUMBER () na pamamaraan ang naglalaman ng isang magkakasunod na numero para sa bawat hilera sa loob ng pagkahati. Ito ay isang tampok lamang sa window ng ilang uri. Ang figure ng mga hilera ay nagsisimula sa 1 sa figure ng mga hilera sa loob ng pagkahati. Tandaan, bago ang bersyon 8.0, hindi pinapayagan ng MySQL ang pagpapaandar na ROW NUMBER () subalit, nag-aalok ito ng isang variable ng session na tumutulong sa isang gayahin ang tampok na ito. Mas mauunawaan namin ang tungkol sa MySQL ROW NUMBER () na pag-andar sa buong gabay na ito at makagawa ng isang magkakasunod na numero para sa bawat hilera sa koleksyon ng resulta. Sa MySQL, ginagamit ang mga pamamaraang ROW_NUMBER () sa alinman sa mga susunod na sugnay:

  • Ang sugnay na Over () ay gagamitin sa loob nito.
  • Ang mga ORDERS BY clause ayusin ang resulta ayon sa pag-uuri ng pagkakasunud-sunod ng nabanggit na haligi.

Syntax:

>> PUMILI col_name,ROW_NUMBER()TAPOS( HAHIRAP NG col_name, INIUTOS NI col_name) AS row_num MULA SA table_name;

Buksan natin ang MySQL command-line client shell mula sa mga application at i-type ang password upang mag-log in.









Kailangan mong lumikha ng isang bagong talahanayan o gamitin ang default na talahanayan upang simulang magtrabaho sa pagpapaandar ng numero ng hilera. Tulad ng ipinakita sa imaheng nasa ibaba, mayroon kaming mga hayop na talahanayan sa data ng iskema na may ilang mga tala dito. Kunin natin ang mga tala nito gamit ang SELECT na tagubilin.



>> PUMILI * MULA SA data .animals;





Halimbawa 01: ROW_NUMBER () Paggamit ng ORDER BY Clause

Gagamitin namin ang parehong talahanayan upang idetalye ang ilang mga halimbawa ng pagpapaandar ng numero ng hilera. Kumukuha kami ng isang halimbawa ng pagpapaandar na ROW_NUMBER () na sinusundan ng Over (), habang ginagamit lamang ang sugnay na ORDER BY. Kinukuha namin ang lahat ng mga tala habang binubilang ang mga hilera ayon sa hanay ng Presyo ng haligi. Ibinigay namin ang pangalan na row_num sa isang haligi, na mag-iimbak ng mga numero ng hilera. Subukan natin ang utos sa ibaba upang gawin ito.

>> PUMILI *,ROW_NUMBER()TAPOS( INIUTOS NI Presyo) AS row_num MULA SA data .animals;

Sa pagpapatupad ng query sa itaas, maaari naming makita na ang mga hilera ay naitalaga sa mga numero ayon sa pagkakasunud-sunod ng pagkakasunod-sunod ng haligi ng Presyo. Maaari mong isipin na ang ilang mga mas maliit na presyo ay dapat na nasa tuktok ng haligi at dapat itong ayusin ayon sa na. Ngunit nakikita lamang ng sugnay na ORDER BY ang unang digit o alpabeto ng haligi upang mag-uri-uriin ang mga halaga.



Isagawa natin ang parehong query na sinusundan ng sugnay na ORDER BY habang ginagamit ang pagkakasunud-sunod ng pagkakasunud-sunod ng hanay ng Edad. Ibibigay ang output ayon sa Edad ng haligi.

>> PUMILI *,ROW_NUMBER()TAPOS( INIUTOS NI Edad) AS row_num MULA SA data .animals;

Halimbawa 02: ROW_NUMBER () Paggamit ng PAGHAHIRAP NG sugnay

Gagamitin namin ang nag-iisang sugnay na BAHAGI NG patungkol sa ROW_NUMBER () na query upang suriin ang mga resulta. Ginagamit namin ang SELECT query upang makuha ang mga talaan na sinusundan ng ROW_NUMBER () at OVER na sugnay, habang binabahagi ang talahanayan ayon sa Kulay ng haligi. Isagawa ang nakadugtong na utos sa ibaba sa command shell.

>> PUMILI *,ROW_NUMBER()TAPOS( HAHIRAP NG Kulay) AS row_num MULA SA data .animals;

Maaari mong makita sa resulta na ang bilang ng mga hilera ay naitalaga sa mga pagkahati, ayon sa pagkakasunod-sunod ng mga kulay. Tulad ng mayroon kaming 4 na halaga para sa kulay Itim na tumatagal ng 4 na hilera. Iyon ang dahilan kung bakit nakakuha ito ng mga numero ng apat na hilera na nagsisimula sa 1 hanggang 4 at kabaliktaran.

Subukan ang parehong halimbawa, na hinati ng haligi ng Kasarian sa oras na ito. Tulad ng alam natin, mayroon lamang kaming dalawang kasarian sa talahanayan na ito, kaya't nabubuo ang 2 mga partisyon. Ang mga babae ay sumasakop ng 9 na hilera, iyon ang dahilan kung bakit mayroon itong row na may bilang mula 1 hanggang 9. Habang ang mga lalaki ay may 8 halaga, iyon ang dahilan kung bakit mayroon itong 1 hanggang 8.

>> PUMILI *,ROW_NUMBER()TAPOS( HAHIRAP NG KASAYSAYAN) AS row_num MULA SA data .animals;

Halimbawa 03: ROW_NUMBER () Paggamit ng PAGHAHIRAP NG & NG order NG BY

Natapos namin ang dalawang halimbawa sa itaas sa linya ng utos ng MySQL, oras na upang gawin ang halimbawa ng ROW_NUMBER () sa MySQL Workbench 8.0. Kaya, buksan ang MySQL Workbench 8.0 mula sa mga application. Ikonekta ang MySQL Workbench sa lokal na root root database upang magsimulang magtrabaho.

Sa kaliwang bahagi ng MySQL Workbench, mahahanap mo ang Schema bar, pumutok ang navigator. Sa bar ng Schema na ito, mahahanap mo ang listahan ng mga database. Sa ilalim ng listahan ng mga database, magkakaroon ka ng iba't ibang mga talahanayan at nakaimbak na mga pamamaraan, tulad ng nakikita mo sa imahe sa ibaba. Mayroon kaming iba't ibang mga talahanayan sa aming 'data' ng database. Bubuksan namin ang talahanayan na 'order1' gamit ang SELECT command sa lugar ng query upang simulang gamitin ito para sa pagpapatupad ng pagpapaandar na ROW_NUMBER ().

>> PUMILI * MULA SA data .order1;

Ang order ng talahanayan1 ay ipinakita sa view ng grid tulad ng ipinakita sa ibaba. Maaari mong makita na mayroon itong 4 na mga patlang ng haligi, id, Rehiyon, Katayuan, at OrderNo. Dadalhin namin ang lahat ng mga tala ng talahanayan na ito habang ginagamit ang sugnay na ORDER BY at PARTISION BY, pareho nang sabay.

Sa lugar ng query ng MySQL Workbench 8.0, i-type ang ipinakitang query sa ibaba. Sinimulan ang query sa SELECT sugnay, kinukuha ang lahat ng mga tala na sinusundan ng pagpapaandar ng ROW_NUMBER () kasama ang OVER na sugnay. Matapos ang MAHIGANG sugnay, tinukoy namin ang haligi ng Katayuan na nagpatuloy ng pahayag na PAHIHIWALA upang hatiin ang talahanayan sa mga pagkahati ayon sa talahanayan na ito. Ang sugnay na ORDER BY ay ginamit upang ayusin ang talahanayan sa pababang paraan ayon sa haligi ng Rehiyon. Ang mga numero ng hilera ay itatago sa row_num na haligi. Mag-tap sa icon ng flash upang maisagawa ang utos na ito.

Ipapakita ang resulta na ipinakita sa ibaba. Una sa lahat, ang talahanayan ay pinaghiwalay sa dalawang bahagi ayon sa mga halaga ng Katayuan ng haligi. Pagkatapos nito, ipinakita ito sa pababang pagkakasunud-sunod ng haligi na 'Rehiyon' at ang mga partisyon ay itinalaga ng mga numero ng hilera.

Konklusyon:

Sa wakas, nakumpleto na namin ang lahat ng kinakailangang mga halimbawa sa paggamit ng pag-andar ng ROW_NUMBER () sa MySQL Workbench at MySQL Command-line Client Shell.