NARUDŽI PO in MySQLASC i DESC upit s primjerom

⚡ Pametni sažetak

NARUDŽI PO in MySQL sortira skupove rezultata upita u uzlaznom ili silaznom redoslijedu pomoću ključnih riječi ASC i DESC. Odjeljci u nastavku objašnjavaju sintaksu, sortiranje u jednom i više stupaca, postavljanje NULL vrijednosti i radne primjere izvršene na primjeru baze podataka myflixdb.

  • 🔠 Zadano ponašanje: ORDER BY sortira uzlaznim redoslijedom kada nije naveden ni ASC ni DESC, pa je ASC opcionalan u većini naredbi.
  • ⬆️ ASC ključna riječ: ASC sortira brojeve od najmanjeg do najvećeg, nizove znakova od A do Ž, a datume od najranijeg do najnovijeg.
  • ⬇️ Ključna riječ DESC: DESC obrće taj redoslijed, što odgovara povijesti nedavnih prvih plaćanja i opadajućem popisu datuma rođenja.
  • 🧮 Sortiranje po više stupaca: Redoslijed stupaca je važan. ORDER BY spol, date_of_birth DESC prvo sortira spol uzlazno, a zatim datume silazno unutar svake grupe.
  • 🔎 Kombinacija klauzula: WHERE filtrira retke, GROUP BY ih agregira, ORDER BY nizira rezultat, a LIMIT ga skraćuje.
  • ️ Faktor performansi: Indeks na sortiranom stupcu omogućuje MySQL kako bi se izbjegla operacija sortiranja datoteka na velikim tablicama.

NARUDŽI PO in MySQL

Što je ORDER BY u MySQL?

MySQL NARUČITE PO je klauzula koja se koristi s SELECT upitom za sortiranje podataka na uredan način. MySQL Klauzula ORDER BY sortira skup rezultata upita uzlaznim ili silaznim redoslijedom, po jednom stupcu ili po nekoliko stupaca odjednom.

Kada se naredba SELECT koristi samostalno, retci se vraćaju redoslijedom kojim ih mehanizam za pohranu pročita, što nije zajamčeni redoslijed. Sortiranje je jednostavno preuređivanje tih redaka u određenom redoslijedu. Može se izvoditi na numeričkim, string i datumskim tipovima podataka podjednako.

MySQL ORDER BY sintaksa

Prije nego što pogledamo primjere, korisno je vidjeti gdje se klauzula nalazi unutar pune SELECT naredbe.

SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];

OVDJE

  • "SELECT izraz...” je regularni upit za odabir.
  • ” | “ predstavlja alternative.
  • „[WHERE uvjet | GROUP BY `naziv_polja` HAVING uvjet]“ je neobavezni uvjet koji se koristi za filtriranje skupa rezultata upita.
  • “NARUČI PO” vrši sortiranje skupa rezultata upita.
  • “[ASC | DESC]” je ključna riječ koja se koristi za sortiranje skupa rezultata u uzlaznom ili silaznom redoslijedu. Imajte na umu da ASC je zadana vrijednost.

Što su DESC i ASC ključne riječi?

ASC i DESC su dva smjera sortiranja koja ORDER BY prihvaća. Tablica u nastavku uspoređuje ih za različite tipove podataka koje ćete najčešće sortirati.

DESC i ASC ključne riječiASC je skraćeni oblik za uzdizanje DESC i ASC ključne riječiMySQL DESC je skraćenica za silazni
Koristi se za sortiranje rezultata upita odozgo prema dolje. Koristi se za sortiranje rezultata upita od dna prema vrhu.
Kada radite na vrstama podataka datuma, najraniji datum prikazan je na vrhu popisa. Prilikom rada s tipovima podataka o datumu, najnoviji datum prikazuje se na vrhu popisa.
Kada radite s numeričkim tipovima podataka, najniže vrijednosti prikazane su na vrhu popisa. Prilikom rada s numeričkim tipovima podataka, najviše vrijednosti prikazuju se na vrhu skupa rezultata upita.
Kada radite s vrstama podataka niza, skup rezultata upita sortira se od onih koji počinju slovom A pa sve do slova Z. Kada radite s tipovima podataka niza, skup rezultata upita sortira se od onih koji počinju slovom Z prema dolje do slova A.

Ključne riječi SQL DESC i ASC koriste se zajedno s naredbom SELECT i MySQL ORDER BY klauzula.

DESC i ASC sintaksa

Ključna riječ sortiranja SQL DESC ima sljedeću osnovnu sintaksu.

SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC | DESC [LIMIT N];

OVDJE

  • SELECT {naziv(a) polja | *} IZ Naziv(a) tablice je naredba koja sadrži polja i tablicu(e) iz kojih treba dobiti skup rezultata.
  • [WHERE stanje] nije obavezan, ali se može koristiti za filtriranje podataka prema danom uvjetu.
  • ORDER BY naziv(i) polja je obavezno i ​​imenuje polje na kojem se vrši sortiranje. MySQL Ključna riječ DESC određuje da se sortiranje vrši silaznim redoslijedom.
  • [OGRANIČENJE N] nije obavezno, ali se može koristiti za ograničavanje broja redaka vraćenih iz skupa rezultata upita.

Zašto koristiti DESC i ASC u MySQL?

Poznavanje sintakse je samo pola slike. Razlog postojanja ORDER BY je taj što skup rezultata koji je lako generirati za bazu podataka nije uvijek lako pročitati.

Pretpostavimo da ispisujete povijest plaćanja za člana videoteke kako bi recepcija mogla brzo odgovoriti na upite. Mnogo je logičnije ispisati plaćanja u silaznom kronološkom redoslijedu, počevši od najnovijeg plaćanja pa sve do najranijeg. DESC u SQL-u je ključna riječ koja postaje korisna u takvoj situaciji, jer se popis može sortirati po datumu plaćanja.

Pretpostavimo da marketinški odjel želi popis filmova po kategorijama kako bi članovi mogli vidjeti koje naslove knjižnica ima prije posudbe. Sortiranje naziva kategorija i naslova filmova uzlaznim redoslijedom omogućuje članovima brzo pretraživanje informacija, točno kao što bi to učinili u indeksu. Ključna riječ ASC služi toj svrsi.

Ukratko, ORDER BY pretvara sirovi skup rezultata u izvješće. Ključna riječ koju odaberete ovisi o pitanju koje čitatelj postavlja: što se nedavno dogodilo poziva na DESC, dok gdje mogu pronaći ovu stavku poziva na ASC.

MySQL Primjer PORUKE PO

Svi primjeri koji slijede izvode se na bazi podataka myflixdb. Počnite s tablicom nesortiranih članova, koja se vraća u zadanom redoslijedu.

SELECT * FROM members;

Izvršavanje gornje skripte u MySQL Workbench u odnosu na myflixdb daje nam sljedeće rezultate prikazane u nastavku.

članski broj puna_imena rod datum_rođenja fizička adresa poštanska_adresa broj_kontakta e-mail
1 Janet Jones ženski 21-07-1980 Prva ulica Parcela broj 4 Privatna torba 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones ženski 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Muški 12-07-1989 3. ulica 34 NULL 12345 rm@tstreet.com
4 Gloria Williams ženski 14-02-1984 2. ulica 23 NULL NULL NULL
5 Leonard Hofstadter Muški NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Muški NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Muški NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Muški 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howarda Wolowitza Muški 24-08-1981 Južni park PO Box 4563 987786553 NULL

Sortiranje silaznim redoslijedom pomoću DESC-a

Pretpostavimo da marketinški odjel želi da se podaci o članovima poredaju od padajućeg redoslijeda datuma rođenja. To pomaže timu da pravovremeno pošalje rođendanske čestitke. Popis se generira upitom u nastavku.

SELECT * FROM members ORDER BY date_of_birth DESC;

Izvršavanje gornje skripte u MySQL Workbench u odnosu na myflixdb daje nam sljedeće rezultate prikazane u nastavku.

MySQL Rezultat upita ORDER BY DESC

Sortiranje uzlaznim redoslijedom s ASC-om

Isti upit u uzlaznom redoslijedu jednostavno zamjenjuje ključnu riječ.

SELECT * FROM members ORDER BY date_of_birth ASC;

MySQL Rezultat upita ORDER BY ASC

Bilješka: NULL znači da uopće nema vrijednosti, što nije isto što i nula ili prazan niz. Uočite na obje snimke zaslona kako su NULL datumi grupirani zajedno: MySQL tretira NULL kao nižu vrijednost od bilo koje druge, pa se NULL retci pojavljuju prvi pod ASC, a posljednji pod DESC.

Kako sortirati po više stupaca u MySQL

Sortiranje po jednom stupcu odgovara na jednostavna pitanja. Izvješća obično zahtijevaju drugu razinu sortiranja, a ORDER BY prihvaća popis polja odvojenih zarezima upravo u tu svrhu.

Razmotrite sljedeći SQL skript za sortiranje koji navodi sve zapise članova bez ikakvih eksplicitnih uputa.

SELECT * FROM `members`;

Izvršavanje gornje skripte daje sljedeće rezultate prikazane u nastavku.

članski broj puna_imena rod datum_rođenja fizička adresa poštanska_adresa broj_kontakta e-mail
1 Janet Jones ženski 21-07-1980 Prva ulica Parcela broj 4 Privatna torba 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones ženski 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Muški 12-07-1989 3. ulica 34 NULL 12345 rm@tstreet.com
4 Gloria Williams ženski 14-02-1984 2. ulica 23 NULL NULL NULL
5 Leonard Hofstadter Muški NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Muški NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Muški NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Muški 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howarda Wolowitza Muški 24-08-1981 Južni park PO Box 4563 987786553 NULL

Sortiranje jednog stupca prema zadanom redoslijedu

Pretpostavimo da želimo popis koji sortira skup rezultata upita pomoću polja spol. Skripta u nastavku to radi bez imenovanja smjera.

SELECT * FROM `members` ORDER BY `gender`;
članski broj puna_imena rod datum_rođenja fizička adresa poštanska_adresa broj_kontakta e-mail
1 Janet Jones ženski 21-07-1980 Prva ulica Parcela broj 4 Privatna torba 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones ženski 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams ženski 14-02-1984 2. ulica 23 NULL NULL NULL
3 Robert Phil Muški 12-07-1989 3. ulica 34 NULL 12345 rm@tstreet.com
5 Leonard Hofstadter Muški NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Muški NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Muški NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Muški 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howarda Wolowitza Muški 24-08-1981 Južni park PO Box 4563 987786553 NULL

Prvi se prikazuju „ženski“ članovi, a zatim „muški“ članovi. To je zato što se klauzula ORDER BY koristi bez navođenja ASC-a ili MySQL Ključna riječ DESC, MySQL sortira skup rezultata upita uzlaznim redoslijedom prema zadanim postavkama.

Sortiranje dvaju stupaca u suprotnim smjerovima

Pogledajmo sada primjer koji izvodi sortiranje pomoću dva stupcaPrvi stupac je sortirano in uzlazni poredak prema zadanim postavkama, dok je drugi stupac sortirano in silazni poredak.

SELECT * FROM `members` ORDER BY `gender`, `date_of_birth` DESC;

Izvršavanje gornje skripte u MySQL Workbench na myflixdb daje sljedeće rezultate.

MySQL Primjer ORDER BY s dva stupca

Stupac spola je prema zadanim postavkama sortiran uzlaznim redoslijedom, dok je stupac datuma rođenja eksplicitno sortiran silaznim redoslijedom. Svaka ključna riječ smjera odnosi se samo na stupac koji slijedi.

Kako kombinirati ORDER BY s WHERE, LIMIT i GROUP BY

ORDER BY rijetko je jedina klauzula u produkcijskom upitu. MySQL uvijek evaluira klauze u fiksnom slijedu, a poznavanje tog slijeda objašnjava zašto rezultati izgledaju onako kako izgledaju.

  1. IZ čita retke iz tablice.
  2. GDJE odbacuje retke koji ne ispunjavaju uvjet.
  3. GROUP BY sažima preostale retke u grupe, a HAVING filtrira te grupe.
  4. NARUČITE PO nizovi bez obzira na preostale retke.
  5. OGRANIČAVA iz sortirane liste izrezuje traženi broj redaka.

Budući da se ORDER BY izvršava nakon WHERE i GROUP BY, ali prije LIMIT, upit poput „pet najmlađih članova iz Woodcresta“ izražava se jednom naredbom.

SELECT full_names, date_of_birth FROM members
WHERE physical_address = 'Woodcrest'
ORDER BY date_of_birth DESC
LIMIT 5;

Isti redoslijed primjenjuje se na grupirane rezultate. Agregirane vrijednosti koje proizvodi agregatne funkcije kao što je COUNT može se sortirati tako da se najprometnija kategorija popne na vrh izvješća.

SELECT gender, COUNT(*) AS members_count FROM members
GROUP BY gender
ORDER BY members_count DESC;

Savjet: ORDER BY može sortirati po aliasu stupca, po izrazu ili čak po položaju stupca kao što je ORDER BY 3. Sortiranje po položaju je osjetljivo jer umetanje novog stupca u SELECT popis tiho mijenja ključ sortiranja. Umjesto toga, imenujte stupac.

Vrijedi zapamtiti jednu točku performansi. Kada sortirani stupac nosi indeks, MySQL može čitati retke po indeksnom redoslijedu i u potpunosti preskočiti sortiranje. Bez indeksa, velike tablice prisiljavaju sortiranje datoteka u memoriji ili na disku, što je uobičajeni razlog zašto upit izvješća postaje spor.

Pitanja i odgovori

Može. Bez indeksa na sortiranom stupcu, MySQL izvodi sortiranje datoteka nad cijelim skupom rezultata. Dodavanje indeksa koji odgovara stupcu ORDER BY i smjeru omogućuje poslužitelju da čita retke po redu i preskoči taj korak.

Obično ne. Zadane sortiranja poput utf8mb4_0900_ai_ci ne razlikuju velika i mala slova, pa se "apple" i "Apple" sortiraju zajedno. Binarno ili _cs sortiranje, ili ORDER BY BINARY column_name, proizvodi sortiranje koje razlikuje velika i mala slova gdje velika slova dolaze prva.

Da. ORDER BY RAND() miješa skup rezultata, što je praktično za odabir slučajnog filma ili člana. Boduje svaki redak prije sortiranja, stoga ga uparite s LIMIT-om i izbjegavajte ga na vrlo velikim tablicama.

Da. AI pomagači ugrađeni u alate kao što su MySQL Radna tezga pretvorite zahtjeve na običnom jeziku u SELECT naredbe pomoću ORDER BY. Uvijek pregledajte generirani stupac i smjer sortiranja jer umjetna inteligencija ne može znati koji redoslijed zahtijeva vaše izvješće.

Djelomično. Savjetnici vođeni umjetnom inteligencijom čitaju spore zapisnike upita i predlažu indekse koji uklanjaju operacije sortiranja datoteka. Prijedlozi i dalje zahtijevaju ljudski pregled, budući da svaki dodatni indeks usporava umetanja i ažuriranja na istoj tablici.

Sažmite ovu objavu uz: