Třídění výsledků
Pomocí příkazu SELECT byly výsledky vráceny ve stejném pořadí, v jakém byly záznamy přidány do databáze. Toto je výchozí pořadí řazení. V této části se podíváme na to, jak můžeme třídit výsledky dotazů. Řazení je jednoduše přeuspořádání výsledků dotazu určitým způsobem. Řazení lze provádět na jednom sloupci nebo na více než jednom sloupci. Lze to provést na datových typech číslo, řetězce i datum.
Co je ORDER BY v MySQL?
MySQL ORDER BY se používá ve spojení s dotazem SELECT k řádnému řazení dat. Klauzule MySQL ORDER BY se používá k řazení sad výsledků dotazu ve vzestupném nebo sestupném pořadí.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
TADY
- „Příkaz SELECT…“ je běžný výběrový dotaz
- „|“ představuje alternativu
- „[WHERE condition | GROUP BY` field_name (s) `HAVING condition“ je volitelná podmínka použitá k filtrování sad výsledků dotazu.
- "ORDER BY" provede třídění sady výsledků dotazu
- „[ASC | DESC]“ je klíčové slovo používané k třídění sad výsledků ve vzestupném nebo sestupném pořadí. Poznámka ASC se používá jako výchozí.
Co jsou klíčová slova DESC a ASC?
ASC je krátká forma pro vzestup |
MySQL DESC je krátká forma pro sestup |
Používá se k řazení výsledků dotazu ve stylu shora dolů. |
Slouží k řazení výsledků dotazu ve stylu zdola nahoru |
Když pracujete na datových typech data, je nejstarší datum zobrazeno v horní části seznamu. |
. Při práci na typech dat se v horní části seznamu zobrazuje poslední datum. |
Při práci s číselnými datovými typy se nejnižší hodnoty zobrazují v horní části seznamu. |
Při práci s číselnými datovými typy se nejvyšší hodnoty zobrazují v horní části sady výsledků dotazu. |
Při práci s datovými typy řetězců je sada výsledků dotazu tříděna od těch, které začínají písmenem A, které stoupá až k písmenu Z. |
Při práci s datovými typy řetězců je sada výsledků dotazu tříděna od těch, které začínají písmenem Z, které přechází na písmeno A. |
Klíčová slova SQL DESC i ASC se používají společně ve spojení s příkazem SELECT a klauzulí ORDER BY MySQL.
Syntaxe DESC a ASC
Klíčové slovo pro řazení SQL DESC má následující základní syntaxi.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
TADY
- VYBRAT {poleNázev pole | *} FROM tableName (s) je příkaz obsahující pole a tabulky, ze kterých lze získat sadu výsledků.
- [WHERE podmínka] je volitelná, ale lze ji použít k filtrování dat podle dané podmínky.
- ORDER BY fieldname (s) je povinné a je to pole, na kterém má být provedeno třídění. Klíčové slovo MySQL DESC určuje, že řazení má být sestupně.
- [LIMIT] je volitelný, ale lze jej použít k omezení počtu výsledků vrácených ze sady výsledků dotazu.
Příklady:
Pojďme se nyní podívat na praktický příklad -
SELECT * FROM members;
Provedení výše uvedeného skriptu v pracovní ploše MySQL proti myflixdb nám dává následující výsledky uvedené níže.
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 |
Předpokládejme, že marketingové oddělení chce, aby byly podrobnosti členů uspořádány v sestupném pořadí podle data narození. To jim pomůže včas zaslat pozdravy k narozeninám. Uvedený seznam můžeme získat spuštěním dotazu, jak je uvedeno níže -
SELECT * FROM members ORDER BY date_of_birth DESC;
Provedení výše uvedeného skriptu v pracovní ploše MySQL proti myflixdb nám dává následující výsledky uvedené níže.
Stejný dotaz ve vzestupném pořadí
VÝBĚR * OD Členů OBJEDNAT PODLE data_of_birth ASC
Poznámka: Hodnoty NULL znamenají žádné hodnoty (ne nula nebo prázdný řetězec). Sledujte, jak byly tříděny.
Další příklady
Zvažme následující skript, který obsahuje seznam všech záznamů členů.
SELECT * FROM `members`;
Provedení výše uvedeného skriptu poskytuje následující výsledky uvedené níže.
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 |
Předpokládejme, že chceme získat seznam, který setřídí sadu výsledků dotazu pomocí pole pohlaví, použijeme níže 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 |
Nejprve se zobrazili členové „samice“ a poté členové „muži“, je to proto, že když se použije klauzule ORDER BY DESC bez zadání klíčového slova ASC nebo MySQL DESC, ve výchozím nastavení MySQL setřídil sadu výsledků dotazu vzestupně.
Podívejme se nyní na příklad, který provádí třídění pomocí dvou sloupců ; První z nich je seřazena ve vzestupném pořadí, ve výchozím nastavení, zatímco druhý sloupec se řazeny v sestupném pořadí.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Provedení výše uvedeného skriptu v pracovní ploše MySQL proti myflixdb poskytuje následující výsledky.
Sloupec pohlaví byl ve výchozím nastavení seřazen vzestupně, zatímco sloupec datum narození byl explicitně seřazen sestupně
Proč můžeme používat DESC a ASC?
Předpokládejme, že chceme vytisknout historii plateb pro člena videotéky, abychom mohli odpovídat na dotazy z recepce, nebylo by logičtější nechat si platby vytisknout v sestupném chronologickém pořadí počínaje poslední platbou předchozí platbě?
DESC v SQL je klíčové slovo, které se v takových situacích hodí. Pomocí data platby můžeme napsat dotaz, který seřadí seznam sestupně.
Předpokládejme, že marketingové oddělení chce získat seznam filmů podle kategorií, které mohou členové použít k rozhodování o tom, které filmy jsou k dispozici v knihovně při půjčování filmů, nebylo by logičtější vzestupně třídit názvy a názvy kategorií filmů tak, aby členové mohou rychle vyhledávat informace ze seznamu?
Klíčové slovo ASC se v takových situacích hodí; můžeme získat seznam filmů seřazený podle názvu kategorie a názvu filmu ve vzestupném pořadí.
souhrn
- Řazení výsledků dotazu znamená nové uspořádání řádků vrácených ze sady výsledků dotazu ve vzestupném nebo sestupném pořadí.
- Klíčové slovo DESC v SQL se používá k seřazení sady výsledků dotazu v sestupném pořadí.
- Klíčové slovo ASC se používá k seřazení sady výsledků dotazu ve vzestupném pořadí.
- DESC i ASC fungují ve spojení s klíčovým slovem ORDER BY. Mohou být také použity v kombinaci s dalšími klíčovými slovy, jako je klauzule WHERE a LIMIT
- Výchozí hodnota pro OBJEDNAT BY, když nic není výslovně uvedeno, je ASC.