Tulemuste sorteerimine
Kasutades käsku SELECT, tagastati tulemused samas järjekorras, kui kirjed lisati andmebaasi. See on vaikimisi sorteerimise järjekord. Selles jaotises uurime, kuidas saaksime päringu tulemusi sortida. Sorteerimine on lihtsalt meie päringutulemuste kindlaksmääratud viisil korraldamine. Sorteerida võib ühe veeru või mitme veeruga. Seda saab teha nii arvu, stringide kui ka kuupäeva andmetüüpide kohta.
Mis on MySQL-is ORDER BY?
MySQL ORDER BY kasutatakse koos SELECT päringuga andmete korrektseks sortimiseks. Klauslit MySQL ORDER BY kasutatakse päringu tulemuste komplektide sortimiseks kas kasvavas või kahanevas järjekorras.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
SIIN
- "SELECT lause ..." on tavaline valikupäring
- "|" tähistab alternatiive
- "[WHERE tingimus | GROUP BY" välja_nimi (s) "HAVING tingimus" on valikuline tingimus, mida kasutatakse päringu tulemuste komplektide filtreerimiseks.
- "ORDER BY" teostab päringu tulemuste komplekti sorteerimise
- "[ASC | DESC]" on märksõna, mida kasutatakse tulemuste komplektide sortimiseks kas kasvavas või kahanevas järjekorras. Märkus . Vaikimisi kasutatakse ASC-d .
Mis on DESC ja ASC märksõnad?
|
|
Seda kasutatakse päringu tulemuste sortimiseks ülalt alla stiilis. |
Seda kasutatakse päringu tulemuste sorteerimiseks alt üles stiilis |
Kuupäeva andmetüüpidega töötamisel kuvatakse loendi ülaosas varaseim kuupäev. |
. Kuupäevatüüpide töötamisel kuvatakse loendi ülaosas viimane kuupäev. |
Numbriliste andmetüüpidega töötamisel kuvatakse loendi ülaosas madalaimad väärtused. |
Numbriliste andmetüüpidega töötamisel kuvatakse kõrgeimad väärtused päringu tulemuste komplekti ülaosas. |
Stringi andmetüüpidega töötamisel sorteeritakse päringu tulemuste komplekt tähest A algavate tähtedega kuni Z-täheni. |
Stringi andmetüüpidega töötamisel sorteeritakse päringu tulemuste komplekt nendest, mis algavad Z-tähega A-täheni. |
Nii SQL DESC kui ka ASC märksõnu kasutatakse koos SELECT-lause ja MySQL ORDER BY-klausliga.
DESC ja ASC süntaks
SQL-i 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
- VALI {väliNimi (d) | *} FROM tableName (s) on lause, mis sisaldab välju ja tabeleid, kust tulemuse saab.
- [WHERE tingimus] on valikuline, kuid seda saab kasutada andmete filtreerimiseks vastavalt antud tingimusele.
- Väli ORDER BY (nimed) on kohustuslik ja see on väli, millel sortimine toimub. Märksõna MySQL DESC täpsustab, et sortimine toimub kahanevas järjekorras.
- [LIMIT] on valikuline, kuid seda saab kasutada päringu tulemuste komplektist tagastatud tulemuste arvu piiramiseks.
Näited:
Vaatame nüüd praktilist näidet -
SELECT * FROM members;
Ülaltoodud skripti käivitamine MySQL-i töölaual myflixdb vastu annab meile järgmised tulemused.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
Oletame, et turundusosakond soovib, et liikmete andmed oleksid järjestatud sünnikuupäeva kahanevas järjekorras. See aitab neil sünnipäevaõnnitlusi õigeaegselt saata. Nimetatud loendi saame, kui täidame päringu nagu allpool -
SELECT * FROM members ORDER BY date_of_birth DESC;
Ülaltoodud skripti käivitamine MySQL-i töölaual myflixdb vastu annab meile järgmised tulemused.
Sama päring kasvavas järjekorras
VALI * LIIKMETEST ORDER BY date_of_birth ASC
Märkus. NULL-väärtused ei tähenda väärtusi (mitte nulli või tühja stringi). Jälgige nende sortimise viisi.
Veel näiteid
Vaatleme järgmist skripti, mis loetleb kõik liikmete kirjed.
SELECT * FROM `members`;
Ülaltoodud skripti käivitamine annab järgmised tulemused.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Oletame, et soovime saada loendi, mis sorteerib päringu tulemuste komplekti väli sugu abil, kasutaksime allpool näidatud skripti.
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Esmalt on kuvatud "naissoost" liikmed, millele järgnevad "mees" liikmed, seda seetõttu, et kui kasutatakse klauslit ORDER BY DESC, määramata märksõna ASC või MySQL DESC, on MySQL vaikimisi sortinud päringutulemused kasvavas järjekorras.
Vaatame nüüd näidet, mis sorteerib kahe veeru abil ; esimene on järjestatud sisse ülenevas järjestuses vaikimisi samas teises veerus on järjestatud sisse kahanevas järjekorras.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Ülaltoodud skripti käivitamine MySQL-i töölaual myflixdb-ga annab järgmised tulemused.
Sugu veerg sorteeriti vaikimisi kasvavas järjekorras, samas kui sünnikuupäeva veerg selgesõnaliselt kahanevas järjekorras
Miks me võime kasutada DESC-d ja ASC-d?
Oletame, et tahame printida videoteegi liikme maksete ajaloo, mis aitab vastuvõtust päringutele vastata, kas poleks loogilisem lasta maksed printida kahanevas kronoloogilises järjekorras, alustades hiljutisest maksest varasemale maksele?
DESC SQL-is on märksõna, mis muutub sellistes olukordades käepäraseks. Saame kirjutada päringu, mis sordib loendi maksekuupäeva järgi kahanevas järjekorras.
Oletame, et turundusosakond soovib saada nimekirja filmidest kategooriate kaupa, mida liikmed saaksid filmide rentimisel otsustada, millised filmid on raamatukogus saadaval, kas poleks loogilisem vaadata filmi kategooriate nimesid ja pealkirju kasvavas järjekorras liikmed saavad loendist teavet kiiresti otsida?
ASC märksõna tuleb sellistes olukordades kasuks; saame filmide loendi järjestada kategooria nime ja filmi pealkirja järgi kasvavas järjekorras.
Kokkuvõte
- Pärimistulemuste sortimine on päringutulemite komplektist tagastatud ridade ümberkorraldamine kas kasvavas või kahanevas järjekorras.
- Märksõna DESC SQL-is kasutatakse päringu tulemuste komplekti sortimiseks kahanevas järjekorras.
- ASC-märksõna kasutatakse päringutulemite komplekti sortimiseks kasvavas järjekorras.
- Nii DESC kui ka ASC töötavad koos märksõnaga ORDER BY. Neid saab kasutada ka koos teiste märksõnadega, nagu klausel WHERE ja LIMIT
- Kui midagi pole selgesõnaliselt täpsustatud, on ORDER BY vaikeväärtus ASC.