Triedenie výsledkov
Pomocou príkazu SELECT boli výsledky vrátené v rovnakom poradí, v akom boli záznamy pridané do databázy. Toto je predvolené poradie triedenia. V tejto časti sa pozrieme na to, ako môžeme triediť výsledky našich dotazov. Zoradenie je jednoducho nové usporiadanie výsledkov dotazu špecifikovaným spôsobom. Triedenie je možné vykonať na jednom stĺpci alebo na viacerých stĺpcoch. To je možné vykonať na dátových typoch číslo, reťazce aj dátum.
Čo je ORDER BY v MySQL?
MySQL ORDER BY sa používa v spojení s dotazom SELECT na usporiadané triedenie údajov. Klauzula MySQL ORDER BY sa používa na triedenie množín výsledkov dotazov vzostupne alebo zostupne.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
TU
- „Príkaz SELECT ...“ je bežný výberový dopyt
- „|“ predstavuje alternatívu
- „[WHERE condition | GROUP BY` pole_name (y) `HAVING condition“ je voliteľná podmienka používaná na filtrovanie množín výsledkov dotazu.
- Parameter „ORDER BY“ vykoná zoradenie sady výsledkov dotazu
- „[ASC | DESC]“ je kľúčové slovo používané na triedenie množín výsledkov vzostupne alebo zostupne. Poznámka ASC sa používa ako predvolené.
Čo sú kľúčové slová DESC a ASC?
|
|
Používa sa na triedenie výsledkov dotazu štýlom zhora nadol. |
Používa sa na triedenie výsledkov dotazu v štýle zdola nahor |
Pri práci na dátových typoch dátumu sa najskorší dátum zobrazuje v hornej časti zoznamu. |
. Pri práci na typoch dátumov sa posledný dátum zobrazuje v hornej časti zoznamu. |
Pri práci s číselnými údajovými typmi sú najnižšie hodnoty zobrazené v hornej časti zoznamu. |
Pri práci s číselnými údajovými typmi sa najvyššie hodnoty zobrazujú v hornej časti množiny výsledkov dotazu. |
Pri práci s dátovými typmi reťazcov sa množina výsledkov dotazu zoradí od tých, ktoré začínajú písmenom A a končiacim písmenom Z. |
Pri práci s dátovými typmi reťazcov sa množina výsledkov dotazu zoradí od tých, ktoré sa začínajú písmenom Z smerom nadol k písmenu A. |
Kľúčové slová SQL DESC aj ASC sa používajú spoločne s príkazom SELECT a klauzulou ORDER BY v MySQL.
Syntax DESC a ASC
Kľúčové slovo zoradenia SQL DESC má nasledujúcu základnú syntax.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
TU
- VYBERTE {poleNázvy | | *} FROM tableName (s) je príkaz obsahujúci polia a tabuľky, z ktorých sa má získať sada výsledkov.
- [WHERE condition] je voliteľné, ale dá sa použiť na filtrovanie údajov podľa danej podmienky.
- ORDER BY fieldname (s) je povinné a je to pole, na ktorom sa má uskutočniť triedenie. Kľúčové slovo MySQL DESC určuje, že zoradenie má byť zostupné.
- [LIMIT] je voliteľný, ale dá sa použiť na obmedzenie počtu výsledkov vrátených zo sady výsledkov dotazu.
Príklady:
Pozrime sa teraz na praktický príklad -
SELECT * FROM members;
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti myflixdb nám dáva nasledujúce výsledky uvedené nižšie.
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 |
Predpokladajme, že marketingové oddelenie chce, aby boli podrobnosti členov usporiadané v zostupnom poradí podľa dátumu narodenia. To im pomôže včas zaslať pozdravy k narodeninám. Uvedený zoznam môžeme získať vykonaním dotazu, ako je uvedené nižšie -
SELECT * FROM members ORDER BY date_of_birth DESC;
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti myflixdb nám dáva nasledujúce výsledky uvedené nižšie.
Rovnaký dopyt vzostupne
VYBERTE * ZO ČLENOV OBJEDNAŤ PODĽA date_of_birth ASC
Poznámka: Hodnoty NULL znamenajú žiadne hodnoty (nie nula alebo prázdny reťazec). Sledujte spôsob ich triedenia.
Viac príkladov
Uvažujme o nasledujúcom skripte, ktorý obsahuje zoznam všetkých záznamov členov.
SELECT * FROM `members`;
Vykonaním vyššie uvedeného skriptu získate nižšie uvedené výsledky.
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 |
Predpokladajme, že chceme získať zoznam, ktorý triedi množinu výsledkov dotazu pomocou poľa pohlavia, použili by sme nižšie uvedený skript.
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 |
Najprv sa zobrazili členovia „ženy“ a potom členovia „muži“, a to preto, že keď sa použije klauzula ORDER BY DESC bez zadania kľúčového slova ASC alebo MySQL DESC, štandardne MySQL zoradil výsledný dotaz vzostupne.
Pozrime sa teraz na príklad, ktorý robí triedenie pomocou dvoch stĺpcov ; Prvý z nich je zoradená vo vzostupnom poradí, v predvolenom nastavení, zatiaľ čo druhý stĺpec sa radené v zostupnom poradí.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti myflixdb poskytuje nasledujúce výsledky.
Stĺpec pohlavia bol predvolene zoradený vzostupne, zatiaľ čo stĺpec dátumu narodenia bol explicitne zoradený zostupne
Prečo môžeme používať DESC a ASC?
Predpokladajme, že chceme vytlačiť históriu platieb člena videotéky, aby sme mohli odpovedať na dotazy z recepcie. Nebolo by logickejšie nechať si platby vytlačiť v zostupnom chronologickom poradí počínajúc od poslednej platby k predchádzajúcej platbe?
DESC v SQL je kľúčové slovo, ktoré sa v takýchto situáciách stáva vhodným. Pomocou dátumu platby môžeme napísať dotaz, ktorý zoradí zoznam zostupne.
Predpokladajme, že marketingové oddelenie chce získať zoznam filmov podľa kategórie, ktoré môžu členovia použiť pri rozhodovaní o tom, ktoré filmy sú k dispozícii v knižnici pri požičiavaní filmov. Nebolo by logickejšie hľadať zoradenie názvov a titulov kategórií filmov vzostupne tak, aby členovia môžu rýchlo vyhľadať informácie zo zoznamu?
V takýchto situáciách sa hodí kľúčové slovo ASC; zoznam filmov môžeme zoradiť vzostupne podľa názvu kategórie a názvu filmu.
Zhrnutie
- Triedenie výsledkov dotazu vedie k novému usporiadaniu riadkov vrátených zo sady výsledkov dotazu vzostupne alebo zostupne.
- Kľúčové slovo DESC v SQL sa používa na triedenie zostavy výsledkov dotazu v zostupnom poradí.
- Kľúčové slovo ASC sa používa na zoradenie výsledkovej sady dotazov vzostupne.
- Programy DESC aj ASC fungujú v spojení s kľúčovým slovom ORDER BY. Môžu sa tiež použiť v kombinácii s inými kľúčovými slovami, ako sú klauzula WHERE a LIMIT
- Predvolená hodnota pre ORDER BY, keď nič nie je výslovne uvedené, je ASC.