MySQL MariaDB

MySQL rindas numura loga funkcija

MySQL rindas numura loga funkcija
MySQL ietvaros ROW NUMBER () metode satur hronoloģisku numuru katrai partijas iekšējai rindai. Tas ir tikai kaut kāda veida loga funkcija. Rindu skaitlis sākas ar 1 ar rindu skaitli nodalījumā. Atcerieties, ka pirms 8. versijas.0, MySQL neatļauj funkciju ROW NUMBER (), taču tas piedāvā sesijas mainīgo, kas palīdz atdarināt šo funkciju. Šajā rokasgrāmatā mēs vairāk sapratīsim par MySQL ROW NUMBER () funkcionalitāti un katrai rezultātu kolekcijas rindai izveidosim secīgu numuru. MySQL metodes ROW_NUMBER () tiek izmantotas ar sekojošām klauzulām:

Sintakse:

>> Atlasiet kol_nosaukumu, ROW_NUMBER () OVER (SADALĪJUMS PĒC kol_nosaukuma, PASŪTĪJUMS PĒC kol_nosaukuma) AS rindas_numurs NO tabulas_nosaukums;

Ļaujiet mums no lietojumprogrammām atvērt MySQL komandrindas klienta čaulu un ierakstīt paroli, lai pieteiktos.

Lai sāktu strādāt ar rindas numura funkciju, jums ir jāizveido jauna tabula vai jāizmanto noklusējuma tabula. Kā parādīts zemāk esošajā attēlā, shēmā “dati” mums ir tabula “dzīvnieki” ar dažiem ierakstiem. Ienesīsim tās ierakstus, izmantojot komandu SELECT.

>> SELECT * FROM dati.dzīvnieki;

01. piemērs: ROW_NUMBER () tiek izmantota klauzula ORDER BY

Mēs izmantosim to pašu tabulu, lai izstrādātu dažus rindas numura funkcijas piemērus. Mēs izmantojam funkcijas ROW_NUMBER () piemēru, kam seko Over (), vienlaikus izmantojot tikai klauzulu ORDER BY. Mēs esam izguvuši visus ierakstus, numurējot rindas atbilstoši slejas “Cena” secībai. Kolonnai esam piešķīruši nosaukumu “row_num”, kurā tiks glabāti rindas numuri. Lai to izdarītu, izmēģināsim zemāk esošo komandu.

>> SELECT *, ROW_NUMBER () OVER (PASŪTĪT PĒC CENAS) AS row_num FROM dati.dzīvnieki;

Izpildot iepriekš minēto vaicājumu, mēs varam redzēt, ka rindas ir piešķirtas ar numuriem atbilstoši kolonnas “Cena” šķirošanas secībai. Jūs varētu domāt, ka dažām mazākām cenām vajadzētu būt kolonnas augšdaļā, un tai vajadzētu kārtot atbilstoši tam. Bet klauzulā ORDER BY vērtībām kārtot redz tikai kolonnas pirmo ciparu vai alfabētu.

Izpildīsim to pašu vaicājumu, kam seko klauzula ORDER BY, vienlaikus izmantojot kolonnas “Vecums” šķirošanas kārtību. Rezultāts tiks norādīts atbilstoši kolonnai “Vecums”.

>> SELECT *, ROW_NUMBER () OVER (ORDER BY Age) AS row_num FROM dati.dzīvnieki;

02. piemērs: ROW_NUMBER (), izmantojot klauzulu PARTITION BY

Lai pārbaudītu rezultātus, mēs izmantosim vienīgo klauzulu PARTITION BY vaicājumā ROW_NUMBER (). Mēs izmantojām vaicājumu SELECT, lai ielādētu ierakstus, kam seko ROW_NUMBER () un klauzula OVER, vienlaikus sadalot tabulu atbilstoši kolonnai “Color”. Komandu čaulā izpildiet pievienoto komandu zemāk.

>> SELECT *, ROW_NUMBER () OVER (SADALĪJUMS PĒC KRĀSAS) AS row_num FROM dati.dzīvnieki;

Rezultātā var redzēt, ka rindu numerācija ir piešķirta starpsienās atbilstoši krāsu šķirošanas kārtībai. Tā kā krāsai “Black” ir 4 vērtības, kas aizņem 4 rindas. Tāpēc tam ir četru rindu numuri, sākot no 1 līdz 4 un otrādi.

Izmēģiniet to pašu piemēru, kas šoreiz sadalīts kolonnā “Dzimums”. Kā mēs zinām, šajā tabulā mums ir tikai divi dzimumi, tāpēc tiks izveidotas 2 starpsienas. Mātītes aizņem 9 rindas, tāpēc to rindu numerācija ir no 1 līdz 9. Lai gan vīriešiem ir 8 vērtības, tāpēc tam ir no 1 līdz 8.

>> SELECT *, ROW_NUMBER () OVER (SADALĪJUMS PĒC dzimuma) AS row_num FROM dati.dzīvnieki;

03. piemērs: ROW_NUMBER (), izmantojot PARTITION BY & ORDER BY

Mēs esam izdarījuši iepriekš minētos divus piemērus MySQL komandrindā, tagad ir pienācis laiks izpildīt ROW_NUMBER () piemēru MySQL Workbench 8.0. Tātad atveriet MySQL Workbench 8.0 no lietojumprogrammām. Lai sāktu darbu, savienojiet MySQL Workbench ar vietējo resursdatora sakņu datu bāzi.

MySQL Workbench kreisajā pusē atradīsit joslu Schema, izpūtiet navigatoru. Šajā shēmas joslā atradīsit datu bāzu sarakstu. Datu bāzu sarakstā jums būs dažādas tabulas un saglabātas procedūras, kā redzat zemāk esošajā attēlā. Mūsu datu bāzē “dati” ir dažādas tabulas. Izmantojot vaicājuma komandu SELECT, vaicājuma apgabalā tiks atvērta tabula 'order1', lai sāktu to izmantot funkcijas ROW_NUMBER () ieviešanai.

>> SELECT * FROM dati.pasūtījums1;

Tabula “order1” ir parādīta režģa skatā, kā parādīts zemāk. Varat redzēt, ka tajā ir 4 kolonnu lauki, id, Region, Status un OrderNo. Mēs iegūsim visus šīs tabulas ierakstus, vienlaikus izmantojot klauzulu ORDER BY un PARTITION BY, abus vienlaicīgi.

MySQL Workbench 8 vaicājumu apgabalā.0, ierakstiet zemāk parādīto vaicājumu. Vaicājums ir sācies ar klauzulu SELECT, iegūstot visus ierakstus, kam seko funkcija ROW_NUMBER (), kā arī klauzula OVER. Pēc klauzulas OVER mēs esam norādījuši kolonnu “Statuss”, kas izriet no paziņojuma “PARTITION BY”, lai tabulu sadalītu nodalījumos saskaņā ar šo tabulu. Klauzula ORDER BY tiek izmantota, lai sakārtotu tabulu dilstošā veidā atbilstoši kolonnai “Reģions”. Rindu numuri tiks saglabāti slejā “row_num”. Pieskarieties zibspuldzes ikonai, lai izpildītu šo komandu.

Tiks parādīts zemāk redzamais rezultāts. Pirmkārt, tabula ir sadalīta divās daļās atbilstoši kolonnas “Statuss” vērtībām. Pēc tam tas ir parādīts kolonnas “Region” dilstošā secībā un nodalījumiem ir piešķirti rindu numuri.

Secinājums:

Visbeidzot, mēs esam pabeiguši visus nepieciešamos piemērus, izmantojot funkciju ROW_NUMBER () MySQL Workbench un MySQL komandrindas klienta čaulā.

Kā lejupielādēt un atskaņot Sid Meier Civilization VI operētājsistēmā Linux
Ievads spēlē Civilization 6 ir mūsdienīga klasiskā koncepcija, kas ieviesta Age of Empires spēļu sērijā. Ideja bija diezgan vienkārša; jūs sāktu pašā ...
Kā instalēt un spēlēt Doom uz Linux
Ievads liktenī Doom sērija radās 90. gados pēc sākotnējā Doom izlaišanas. Tas bija tūlītējs hīts, un kopš tā laika spēļu sērija ir saņēmusi daudzas ba...
Vulkan Linux lietotājiem
Ar katru jauno grafisko karšu paaudzi mēs redzam, kā spēļu izstrādātāji pārspēj grafiskās uzticamības robežas un tuvojas fotoreālismam. Neskatoties uz...