MySQL MariaDB

Funkcija prozora broja redaka MySQL

Funkcija prozora broja redaka MySQL
Unutar MySQL-a metoda REDNI BROJ () sadrži kronološki broj za svaki redak unutar particije. To je samo neka vrsta značajke prozora. Slika redaka započinje s 1 s redcima unutar particije. Zapamtite, prije verzije 8.0, MySQL ne dopušta funkciju REDNI BROJ (), međutim nudi varijablu sesije koja pomaže oponašanju ove značajke. U ovom ćemo vodiču razumjeti više o funkciji MySQL REDNI BROJ () i izraditi uzastopni broj za svaki redak u zbirci rezultata. U MySQL-u se koriste metode ROW_NUMBER () s bilo kojom od sljedećih klauzula:

Sintaksa:

>> ODABERI col_name, ROW_NUMBER () NAD (PARTITION BY col_name, ORDER BY col_name) KAO row_num IZ_ime_tablice;

Otvorimo klijentsku ljusku naredbenog retka MySQL iz aplikacija i upišimo lozinku za prijavu.

Morate stvoriti novu tablicu ili upotrijebiti zadanu tablicu da biste počeli raditi na funkciji broja retka. Kao što je prikazano na donjoj slici, u shemi „podaci“ imamo tablicu „životinje“ s nekoliko zapisa. Dohvatimo njegove zapise pomoću naredbe SELECT.

>> ODABERI * IZ podataka.životinje;

Primjer 01: ROW_NUMBER () Korištenjem klauzule ORDER BY

Istu ćemo tablicu koristiti za razradu nekih primjera funkcije broja redaka. Uzimamo primjer funkcije ROW_NUMBER () nakon koje slijedi Over (), dok koristimo samo klauzulu ORDER BY. Dohvaćali smo sve zapise dok smo numerirali retke prema redoslijedu stupca "Cijena". Dali smo naziv "row_num" stupcu koji će pohraniti brojeve redaka. Pokušajmo naredbu u nastavku da to učinimo.

>> ODABERI *, RED_NUMBER () PREKO (NARUČI PO CIJENI) KAO red_broj IZ podataka.životinje;

Nakon izvršavanja gornjeg upita možemo vidjeti da su redovi dodijeljeni brojevima prema redoslijedu sortiranja stupca "Cijena". Možda mislite da bi neke manje cijene trebale biti na vrhu stupca i trebale bi se sortirati prema tome. Ali klauzula ORDER BY vidi samo prvu znamenku ili abecedu stupca za razvrstavanje vrijednosti.

Izvršimo isti upit praćen klauzulom ORDER BY dok koristimo redoslijed sortiranja stupca "Dob". Izlaz će se dati prema stupcu "Dob".

>> ODABERI *, RED_NUMBER () NAD (REDOSLIJED PO dobi) KAO red_broj IZ podataka.životinje;

Primjer 02: ROW_NUMBER () Korištenjem klauzule PARTITION BY

Za provjeru rezultata koristit ćemo jedinu klauzulu PARTITION BY u upitu ROW_NUMBER (). Koristili smo upit SELECT za dohvaćanje zapisa koji slijede ROW_NUMBER () i OVER klauzula, dok smo tablicu dijelili prema stupcu "Boja". Izvršite dodanu naredbu u naredbenoj ljusci.

>> ODABERI *, RED_NUMBER () NAD (DIJELJENJE PO BOJI) KAO red_broj IZ podataka.životinje;

U rezultatu možete vidjeti da je numeriranje redaka dodijeljeno u particijama, prema redoslijedu sortiranja boja. Kako imamo 4 vrijednosti za boju „Crna“ koja traje 4 reda. Zbog toga ima brojeve u četiri reda koji počinju od 1 do 4 i obrnuto.

Isprobajte isti primjer, ovaj put podijeljen u stupac "Spol". Kao što znamo, u ovoj tablici imamo samo dva spola, zato će se formirati 2 particije. Ženke zauzimaju 9 redaka, zato ima redove s brojevima od 1 do 9. Dok muškarci imaju 8 vrijednosti, zato ima 1 do 8.

>> ODABERI *, RED_NUMBER () PREKO (PODJELA PO SPOLU) KAO red_broj IZ podataka.životinje;

Primjer 03: RED_NUMBER () Korištenje PARTITION BY & ORDER BY

Napravili smo gornja dva primjera u MySQL naredbenom retku, sada je vrijeme da napravimo primjer ROW_NUMBER () u MySQL Workbenchu ​​8.0. Dakle, otvorite MySQL Workbench 8.0 iz aplikacija. Povežite MySQL Workbench s matičnom bazom podataka lokalnog hosta da biste započeli s radom.

Na lijevoj strani MySQL Workbencha pronaći ćete traku sheme, ispuhajte navigator. U ovoj traci sheme pronaći ćete popis baza podataka. Ispod popisa baza podataka imat ćete različite tablice i pohranjene procedure, kao što možete vidjeti na donjoj slici. U našoj bazi podataka imamo različite tablice. Otvorit ćemo tablicu 'order1' pomoću naredbe SELECT u području upita kako bismo je počeli koristiti za implementaciju funkcije ROW_NUMBER ().

>> ODABERI * IZ podataka.red1;

Tablica "order1" prikazana je u mrežnom prikazu, kao što je prikazano u nastavku. Možete vidjeti da ima 4 polja stupca, id, Region, Status i OrderNo. Dohvatit ćemo sve zapise ove tablice dok koristimo klauzulu ORDER BY i PARTITION BY, obje istovremeno.

U području upita MySQL Workbencha 8.0, upišite dolje prikazani upit. Upit je pokrenut klauzulom SELECT, dohvaćajući sve zapise praćene funkcijom ROW_NUMBER () zajedno s klauzulom OVER. Nakon klauzule OVER, odredili smo stupac “Status” koji slijedi izraz “PARTITION BY” za dijeljenje tablice u particije prema ovoj tablici. Klauzula ORDER BY koristi se za slaganje tablice u silaznom načinu prema stupcu “Regija”. Brojevi redaka čuvat će se u stupcu "number_num". Dodirnite ikonu bljeskalice da biste izvršili ovu naredbu.

Prikazat će se dolje prikazani rezultat. Prije svega, tablica je podijeljena u dva dijela prema vrijednostima stupca "Status". Nakon toga prikazan je u padajućem redoslijedu stupca 'Regija', a particijama su dodijeljeni brojevi redaka.

Zaključak:

Napokon, dovršili smo sve potrebne primjere korištenja funkcije ROW_NUMBER () u MySQL Workbenchu ​​i MySQL klijentskoj ljusci naredbenog retka.

Kako obrnuti smjer pomicanja miša i dodirnih pločica u sustavu Windows 10
Miš i Dodirna pločaRačunarstvo ne samo da olakšava, već i učinkovitije i oduzima puno vremena. Ne možemo zamisliti život bez ovih uređaja, ali činjeni...
Kako promijeniti pokazivač miša i veličinu, boju i shemu pokazivača na sustavu Windows 10
Pokazivač i pokazivač miša u sustavu Windows 10 vrlo su važni aspekti operativnog sustava. To se može reći i za druge operativne sustave, tako da u is...
Besplatni i otvoreni kodni pokretački programi za razvoj Linux igara
Ovaj će članak pokriti popis besplatnih i open source pokretačkih igara koje se mogu koristiti za razvoj 2D i 3D igara na Linuxu. Brojni su takvi moto...