OBJEDNEJTE DO v MySQL: Dotaz DESC & ASC s PŘÍKLADEM
Řazení 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ů dotazů zadaným způsobem. Třídění lze provádět na jednom sloupci nebo na více než jednom sloupci. Lze to provést na datových typech čísel, řetězců i data.
Co je ORDER BY in MySQL?
MySQL SEŘADIT PODLE se používá ve spojení s dotazem SELECT k řádnému řazení dat. The MySQL Klauzule 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];
ZDE
- "příkaz SELECT... " je běžný výběrový dotaz
- “ | “ představuje alternativy
- “[KDE podmínka | GROUP BY `field_name(s)` HAVING podmínka” je volitelná podmínka používaná k filtrování sad výsledků dotazu.
- "SEŘADIT PODLE" provádí řazení sady výsledků dotazu
- “[ASC | DESC]“ je klíčové slovo používané k řazení sad výsledků ve vzestupném nebo sestupném pořadí. Poznámka ASC se používá jako výchozí.
- SELECT {fieldName(s) | *} FROM tableName(s) je příkaz obsahující pole a tabulky, ze kterých se získá výsledná sada.
- [KDE podmínka] je volitelný, ale lze jej použít k filtrování dat podle dané podmínky.
- SEŘADIT PODLE fieldname(s) je povinné a je to pole, podle kterého se má řazení provést. The MySQL Klíčové slovo DESC určuje, že řazení má být v sestupném pořadí.
- [OMEZIT] je volitelná, ale lze ji použít k omezení počtu výsledků vrácených ze sady výsledků dotazu.
Co jsou klíčová slova DESC a ASC?
Používá se k řazení výsledků dotazu ve stylu shora dolů. | Používá se k řazení výsledků dotazu ve stylu zdola nahoru |
Při práci s datovými typy data se v horní části seznamu zobrazuje nejstarší datum. | . Při práci s typy dat se v horní části seznamu zobrazuje nejnovější datum. |
Při práci s numerickými datovými typy jsou nejnižší hodnoty zobrazeny v horní části seznamu. | Při práci s numerickými datovými typy jsou nejvyšší hodnoty zobrazeny v horní části sady výsledků dotazu. |
Při práci s datovými typy řetězců se sada výsledků dotazu třídí od těch, které začínají písmenem A až po písmeno Z. | Při práci s datovými typy řetězců je sada výsledků dotazu setříděna od těch, které začínají písmenem Z až po písmeno A. |
Klíčová slova SQL DESC i ASC se používají společně s příkazem SELECT a MySQL doložka ORDER BY.
Syntaxe DESC a ASC
Klíčové slovo SQL DESC řazení má následující základní syntaxi.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
ZDE
Příklady:
Podívejme se nyní na praktický příklad –
SELECT * FROM members;
Spuštění výše uvedeného skriptu v MySQL workbench 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 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 podrobnosti o členech uspořádané v sestupném pořadí podle data narození. To jim pomůže včas odeslat blahopřání k narozeninám. Uvedený seznam můžeme získat provedením dotazu jako níže –
SELECT * FROM members ORDER BY date_of_birth DESC;
Spuštění výše uvedeného skriptu v MySQL workbench proti myflixdb nám dává následující výsledky uvedené níže.
Stejný dotaz ve vzestupném pořadí
SELECT * FROM členů ORDER BY datum_narození ASC
Poznámka: Hodnoty NULL znamenají žádné hodnoty (nikoli nulu nebo prázdný řetězec). Sledujte způsob jejich třídění.
Další příklady
Podívejme se na následující řazení SQL podle skriptu, který uvádí všechny záznamy členů.
SELECT * FROM `members`;
Spuštění výše uvedeného skriptu poskytne 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 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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ý třídí sadu výsledků dotazu pomocí pole pohlaví, použili bychom 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 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
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 | rm@tstreet.com |
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 |
Jako první byli zobrazeni „Ženští“ členové následovaní „Mužskými“ členy, protože když je použita klauzule ORDER BY DESC bez určení ASC nebo MySQL Klíčové slovo DESC, ve výchozím nastavení, MySQL seřadil sadu výsledků dotazu ve vzestupném pořadí.
Podívejme se nyní na příklad, který dělá řazení pomocí dvou sloupců; první je tříděny in vzestupně ve výchozím nastavení, zatímco druhý sloupec je tříděny in sestupné pořadí.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Spuštění výše uvedeného skriptu v MySQL workbench proti myflixdb dává následující výsledky.
Sloupec pohlaví byl ve výchozím nastavení seřazen vzestupně, zatímco sloupec data narození byl seřazen explicitně sestupně
Proč můžeme používat DESC a ASC?
Předpokládejme, že chceme vytisknout historii plateb pro člena videotéky, abychom pomohli zodpovědět dotazy z recepce, nebylo by logičtější nechat vytisknout platby v sestupném chronologickém pořadí počínaje poslední platbou až po dřívější platbu?
DESC v SQL je klíčové slovo, které se v takových situacích hodí. Můžeme napsat dotaz, který seřadí seznam sestupně podle data platby.
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ší podívat se seřadit názvy kategorií filmů a název vzestupně tak, aby mohou členové rychle vyhledat 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í.
Shrnutí
- Řazení výsledků dotazu je přeuspořádání řádků vrácených ze sady výsledků dotazu buď 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. Lze je také použít v kombinaci s jinými klíčovými slovy jako např klauzule WHERE a LIMIT
- Výchozí pro ORDER BY, pokud nebylo nic explicitně specifikováno, je ASC.