TELLI sisse MySQLASC ja DESC päring näitega
⚡ Nutikas kokkuvõte
TELLI sisse MySQL sorteerib päringutulemuste komplekte kasvavas või kahanevas järjestuses märksõnade ASC ja DESC abil. Allolevates osades selgitatakse süntaksit, ühe- ja mitmeveerulist sortimist, NULL-paigutust ja töötatud näiteid myflixdb näidisandmebaasis.
Mis on ORDER BY sisse MySQL?
MySQL TELLI on klausel, mida kasutatakse koos SELECT-päringuga andmete korrapäraseks sortimiseks. MySQL ORDER BY klausel sorteerib päringu tulemuste komplekti kas kasvavas või kahanevas järjekorras, ühes veerus või mitmes veerus korraga.
Kui SELECT-käsku kasutatakse iseseisvalt, tagastatakse read järjekorras, milles salvestusmootor neid juhtub lugema, mis ei ole garanteeritud järjekord. Sorteerimine on lihtsalt nende ridade ümberkorraldamine kindlas järjekorras. Seda saab teha nii numbriliste, string- kui ka kuupäevaandmete puhul.
MySQL ORDER BY süntaks
Enne näidete vaatamist on kasulik vaadata, kus klausel täielikus SELECT-lauses paikneb.
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
SIIN
- "SELECT avaldus... " on tavaline valikupäring.
- "| " esindab alternatiive.
- „[WHERE tingimus | GROUP BY `välja_nimi(d)` OMAB tingimust]” on valikuline tingimus, mida kasutatakse päringu tulemuste komplekti filtreerimiseks.
- "TELLI" teostab päringu tulemuste komplekti sortimise.
- “[ASC | DESC]” on märksõna, mida kasutatakse tulemuste komplekti sortimiseks kas kasvavas või kahanevas järjekorras. Pange tähele, et ASC on vaikimisi.
Mis on DESC ja ASC märksõnad?
ASC ja DESC on kaks sortimissuunda, mida ORDER BY aktsepteerib. Allolev tabel võrdleb neid andmetüüpide lõikes, mida te kõige sagedamini sorteerite.
ASC on tõusva lühivorm |
MySQL DESC on kahanemise lühivorm |
|---|---|
| Seda kasutatakse päringutulemuste sortimiseks ülalt alla stiilis. | Seda kasutatakse päringu tulemuste sortimiseks alt üles stiilis. |
| Kuupäeva andmetüüpidega töötades kuvatakse loendi ülaosas varaseim kuupäev. | Kuupäeva andmetüüpidega töötamisel kuvatakse viimane kuupäev loendi ülaosas. |
| Numbriliste andmetüüpidega töötamisel kuvatakse loendi ülaosas madalaimad väärtused. | Numbriliste andmetüüpidega töötamisel kuvatakse päringu tulemuste komplekti ülaosas suurimad väärtused. |
| Stringi andmetüüpidega töötamisel sorteeritakse päringutulemused A-tähega algavatest tulemustest kuni Z-täheni. | Stringi andmetüüpidega töötamisel sorteeritakse päringutulemused Z-tähega algavatest päringutulemuste komplektist kuni A-täheni. |
Nii SQL-i märksõnu DESC kui ka ASC kasutatakse koos SELECT-lausega ja MySQL TELLIMINE klausli järgi.
DESC ja ASC süntaks
SQL DESC sortimismärksõnal on järgmine põhisüntaks.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC | DESC [LIMIT N];
SIIN
- SELECT {fieldName(s) | *} FROM tabelinime(de)st on lause, mis sisaldab välju ja tabelit/tabeleid, kust tulemite komplekt hankida.
- [KUS tingimus] on valikuline, kuid seda saab kasutada andmete filtreerimiseks vastavalt antud tingimusele.
- ORDER BY väljanime(de) järgi on kohustuslik ja nimetab välja, mille järgi sorteerimist teostatakse. MySQL Märksõna DESC määrab, et sorteerimine toimub kahanevas järjekorras.
- [PIIR N] on valikuline, kuid seda saab kasutada päringu tulemuste komplektist tagastatavate ridade arvu piiramiseks.
Miks kasutada DESC-d ja ASC-d MySQL?
Süntaksi tundmine on vaid pool pildist. ORDER BY olemasolu põhjus on see, et tulemuste komplekti, mida on andmebaasi jaoks lihtne luua, ei ole inimesel alati lihtne lugeda.
Oletame, et prindite videoteegi liikme maksete ajaloo, et administraator saaks päringutele kiiresti vastata. Palju loogilisem on printida maksed kahanevas kronoloogilises järjekorras, alustades viimasest maksest ja liikudes tagasi varaseima makseni. Sellises olukorras on kasulik märksõna DESC SQL-is, kuna nimekirja saab maksekuupäeva järgi sortida.
Oletame nüüd, et turundusosakond soovib filmide nimekirja kategooriate kaupa, et liikmed näeksid enne laenutamist, milliseid filme raamatukogus on. Kategooriate nimede ja filmide pealkirjade sortimine kasvavas järjekorras võimaldab liikmetel kiiresti teavet otsida, täpselt nagu nad teeksid seda registrist. Selleks otstarbeks kasutatakse märksõna ASC.
Lühidalt, ORDER BY muudab toores tulemuste komplekti aruandeks. Valitud märksõna sõltub lugeja küsimusest: mis juhtus viimati nõuab DESC-i, samal ajal kui Kust ma selle eseme leian nõuab ASC-d.
MySQL ORJESTUSE JÄRGI Näide
Kõik järgnevad näited töötavad myflixdb näidisandmebaasis. Alustage sortimata liikmete tabelist, mis tagastatakse vaikejärjestuses.
SELECT * FROM members;
Ülaltoodud skripti käivitamine MySQL Workbench myflixdb vastu annab meile järgmised tulemused, mis on näidatud allpool.
| liikme_number | täis_nimed | sugu | sünnikuupäev | füüsiline_aadress | postiaadress | kontaktnumber | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Naine | 21-07-1980 | Esimese tänava krunt nr 4 | Privaatne kott | +0759 253 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Naine | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Mees | 12-07-1989 | 3. tänav 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Naine | 14-02-1984 | 2. tänav 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Mees | NULL | Puidupuust | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Mees | NULL | Puidupuust | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Mees | NULL | Puidupuust | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Mees | 14-02-1984 | Puidupuust | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Mees | 24-08-1981 | South Park | PO Box 4563 | 987786553 | NULL |
Sorteerimine kahanevas järjekorras DESC abil
Oletame, et turundusosakond soovib liikmete andmeid järjestada sünnikuupäeva kahanevas järjekorras. See aitab meeskonnal sünnipäevatervitusi õigeaegselt saata. Nimekiri luuakse alloleva päringu abil.
SELECT * FROM members ORDER BY date_of_birth DESC;
Ülaltoodud skripti käivitamine MySQL Workbench myflixdb vastu annab meile järgmised tulemused, mis on näidatud allpool.
Sorteerimine kasvavas järjekorras ASC abil
Sama päring kasvavas järjekorras vahetab lihtsalt märksõna.
SELECT * FROM members ORDER BY date_of_birth ASC;
Märge: NULL tähendab, et väärtust pole üldse, mis ei ole sama mis null või tühi string. Jälgige mõlemal ekraanipildil, kuidas NULL-kuupäevad on rühmitatud: MySQL käsitleb NULL-i madalamana kui ühtegi teist väärtust, seega NULL-read kuvatakse ASC all esimesena ja DESC all viimasena.
Kuidas sortida mitme veeru järgi MySQL
Ühe veeru järgi sortimine vastab lihtsatele küsimustele. Aruanded vajavad tavaliselt teist järjestustaset ja ORDER BY aktsepteerib just selleks otstarbeks komaga eraldatud väljade loendit.
Vaatleme järgmist SQL-i sortimisskripti, mis loetleb kõik liikmekirjed ilma selgesõnalise suunata.
SELECT * FROM `members`;
Ülaltoodud skripti käivitamine annab järgmised allpool näidatud tulemused.
| liikme_number | täis_nimed | sugu | sünnikuupäev | füüsiline_aadress | postiaadress | kontaktnumber | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Naine | 21-07-1980 | Esimese tänava krunt nr 4 | Privaatne kott | +0759 253 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Naine | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Mees | 12-07-1989 | 3. tänav 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Naine | 14-02-1984 | 2. tänav 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Mees | NULL | Puidupuust | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Mees | NULL | Puidupuust | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Mees | NULL | Puidupuust | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Mees | 14-02-1984 | Puidupuust | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Mees | 24-08-1981 | South Park | PO Box 4563 | 987786553 | NULL |
Ühe veeru sortimine vaikejärjestuse järgi
Oletame, et tahame loendit, mis sorteerib päringutulemuste komplekti soo välja abil. Allolev skript teeb seda ilma suunda nimetamata.
SELECT * FROM `members` ORDER BY `gender`;
| liikme_number | täis_nimed | sugu | sünnikuupäev | füüsiline_aadress | postiaadress | kontaktnumber | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Naine | 21-07-1980 | Esimese tänava krunt nr 4 | Privaatne kott | +0759 253 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Naine | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Naine | 14-02-1984 | 2. tänav 23 | NULL | NULL | NULL |
| 3 | Robert Phil | Mees | 12-07-1989 | 3. tänav 34 | NULL | 12345 | rm@tstreet.com |
| 5 | Leonard Hofstadter | Mees | NULL | Puidupuust | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Mees | NULL | Puidupuust | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Mees | NULL | Puidupuust | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Mees | 14-02-1984 | Puidupuust | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Mees | 24-08-1981 | South Park | PO Box 4563 | 987786553 | NULL |
Esmalt kuvatakse „naisliikmed“, seejärel „meesliikmed“. See on nii seetõttu, et kui ORDER BY klauslit kasutatakse ilma ASC-d või ... täpsustamata MySQL DESC märksõna, MySQL sorteerib päringu tulemuste komplekti vaikimisi kasvavas järjekorras.
Kahe veeru sortimine vastassuunas
Vaatame nüüd näidet, mis teostab sorteerimine kahe veeru abilEsimene veerg on sorteeritud in kasvavas järjekorras vaikimisi, samas kui teine veerg on sorteeritud in kahanev järjestus.
SELECT * FROM `members` ORDER BY `gender`, `date_of_birth` DESC;
Ülaltoodud skripti käivitamine MySQL Workbench myflixdb vastu annab järgmised tulemused.
Sugu veerg sorteeriti vaikimisi kasvavas järjekorras, sünnikuupäeva veerg aga selgelt kahanevas järjekorras. Iga suuna märksõna kehtib ainult sellele järgneva veeru kohta.
Kuidas kombineerida ORDER BY funktsioone WHERE, LIMIT ja GROUP BY funktsioonidega
ORDER BY on harva ainus klausel tootmispäringus. MySQL hindab lauseid alati kindlas järjekorras ja selle järjestuse tundmine selgitab, miks tulemused näevad välja sellised, nagu nad näevad.
- ALATES loeb tabelist ridu.
- KUS eemaldab read, mis tingimusele ei vasta.
- GROUP BY koondab allesjäänud read rühmadesse ja HAVING filtreerib need rühmad.
- TELLI järjestused, mis tahes read alles jäävad.
- LIMIT lõikab sorteeritud loendist välja nõutud arvu ridu.
Kuna ORDER BY käivitatakse pärast WHERE ja GROUP BY, aga enne LIMIT, siis päring, näiteks „viis noorimat liiget Woodcrestist”, väljendatakse ühes lauses.
SELECT full_names, date_of_birth FROM members WHERE physical_address = 'Woodcrest' ORDER BY date_of_birth DESC LIMIT 5;
Sama järjestus kehtib ka rühmitatud tulemuste kohta. Koondväärtused, mis on saadud koondfunktsioonid Näiteks COUNT-i saab sortida, nii et kõige tihedam kategooria tõuseb aruande algusesse.
SELECT gender, COUNT(*) AS members_count FROM members GROUP BY gender ORDER BY members_count DESC;
Vihje: ORDER BY saab sortida veeru aliase, avaldise või isegi veeru positsiooni (nt ORDER BY 3) järgi. Positsiooni järgi sortimine on ebakindel, sest uue veeru lisamine SELECT-loendisse muudab vaikselt sortimisvõtit. Selle asemel nimeta veerg.
Üks jõudluse aspekt on väärt meelespidamist. Kui sorteeritud veerg kannab indeksit, MySQL saab ridu indeksi järjekorras lugeda ja sortimise üldse vahele jätta. Ilma indeksita sunnivad suured tabelid failide sortimist mälus või kettal, mis on tavaliselt põhjus, miks aruande päring muutub aeglaseks.


ASC on tõusva lühivorm
MySQL DESC on kahanemise lühivorm

