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.

  • 🔠 Vaikimisi käitumine: ORDER BY sorteerib kasvavas järjekorras, kui ei ole märgitud ASC ega DESC, seega on ASC enamikus lausetes valikuline.
  • ⬆️ ASC-märksõna: ASC järjestab numbreid väikseimast suurimani, stringe A-st Z-ni ja kuupäevi vanimast uusimani.
  • ⬇️ DESC-märksõna: DESC pöörab selle järjestuse ümber, mis sobib hiljutiste esimeste maksete ajaloo ja kahanevate sünnikuupäevade loenditega.
  • 🧮 Mitme veeru sortimine: Veergude järjekord on oluline. ORDER BY soo järgi, date_of_birth DESC sorteerib kõigepealt soo kasvavalt ja seejärel kuupäevad igas rühmas kahanevalt.
  • 🔎 Klauslite kombinatsioon: WHERE filtreerib ridu, GROUP BY koondab need, ORDER BY järjestab tulemuse ja LIMIT kärbib seda.
  • ⚙️ Jõudlustegur: Sorteeritud veeru indeks võimaldab MySQL et vältida failisortimise toimingut suurte tabelite puhul.

TELLI sisse MySQL

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.

DESC ja ASC märksõnadASC on tõusva lühivorm DESC ja ASC märksõnadMySQL 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 e-mail
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.

MySQL ORDER BY DESC päringu tulemus

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;

MySQL ORDER BY ASC päringu tulemus

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 e-mail
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 e-mail
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.

MySQL Kahe veeru ORDER BY näide

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.

  1. ALATES loeb tabelist ridu.
  2. KUS eemaldab read, mis tingimusele ei vasta.
  3. GROUP BY koondab allesjäänud read rühmadesse ja HAVING filtreerib need rühmad.
  4. TELLI järjestused, mis tahes read alles jäävad.
  5. 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.

KKK

See võib nii olla. Ilma sorteeritud veeru indeksita MySQL teostab failide sortimise kogu tulemuste komplekti ulatuses. ORDER BY veerule ja suunale vastava indeksi lisamine võimaldab serveril ridu järjekorras lugeda ja selle sammu vahele jätta.

Tavaliselt mitte. Vaikimisi järjestused, näiteks utf8mb4_0900_ai_ci, ei ole tõstutundlikud, seega sorteerivad „apple” ja „Apple” koos. Binaar- või _cs-järjestus ehk ORDER BY BINARY veeru_nimi loob tõstutundliku järjestuse, kus suurtähed on esimesena.

Jah. ORDER BY RAND() segab tulemuste komplekti, mis on mugav juhusliku filmi või liikme valimiseks. See hindab iga rida enne sortimist, seega kasutage seda koos LIMIT funktsiooniga ja vältige seda väga suurte tabelite puhul.

Jah. Tööriistadesse, näiteks, on sisse ehitatud tehisintellekti abilised. MySQL Workbench Muutke lihtkeelsed päringud SELECT-lauseteks ORDER BY abil. Kontrollige alati genereeritud sortimisveergu ja -suunda, sest tehisintellekt ei tea, millist järjestust teie aruanne nõuab.

Osaliselt. Tehisintellektil põhinevad nõustajad loevad aeglase päringu logisid ja soovitavad indekseid, mis eemaldavad failisortimise toimingud. Soovitused vajavad siiski inimese poolt ülevaatamist, kuna iga lisaindeks aeglustab sama tabeli sisestamist ja värskendamist.

Võta see postitus kokku järgmiselt: