Tento kurz vysvětluje klauzuli ORDER BY v MySQL a její použití s volbami ASC a DESC. Tento příkaz MySQL popíšeme pomocí jednoduchých příkladů.
1. Syntaxe klauzule ORDER BY
2. ORDER BY W/O ASC nebo DESC
3. ORDER BY DESC
4. ORDER BY relativní pozice
5. ORDER BY relativní pozice. ORDER BY Dvě pole ASC & DESC
Projdeme si nyní postupně jednotlivé části.
Klauzule ORDER BY v MySQL
Příkaz SELECT v MySQL standardně nevrací setříděný soubor výsledků. Chcete-li tedy výsledek setřídit, musíte v dotazu SELECT doplnit klauzuli ORDER BY. Pomocí klauzule ORDER BY můžeme dosáhnout následujícího:
- Provedení třídění záznamů podle jednoho/více polí
- Setřídění řádků podle různých sloupců vzestupně (ASC) nebo sestupně (DESC).
Následující obrázek ilustruje syntaxi klauzule ORDER BY:
Syntaxe
# MySQL ORDER BY ClauseSELECT field1, field2,...FROM target_tableORDER BY field1 , field2 ,...
Klauzule ORDER BY standardně provádí řazení vzestupně. Termín ASC je zkratka pro rostoucí, zatímco DESC znamená klesající. Pokud jde o DESC, musíte jej uvést v dotazu SELECT.
Vezměte prosím na vědomí, že v MySQL můžete zadat i výraz s ORDER BY. Také obě možnosti ASC a DESC jsou u tohoto příkazu nepovinné.
Přinášíme několik ukázkových cvičení pro procvičení.
Příklady klauzule ORDER BY v MySQL
Podívejme se, jak používat klauzuli ORDER BY v dotazech SELECT v MySQL.
Použití klauzule order by bez možnosti asc/desc
Pro demonstraci si nejprve vytvoříme tabulku s názvem Sample a naplníme ji testovacími daty.
CREATE TABLE Sample ( sample_id int NOT NULL, sample_name VARCHAR(20), vendor_name VARCHAR(20), sample_size INT );
Následujícím krokem bude vložení fiktivních dat pro naše testování.
Poté musíme zkontrolovat obsah naší tabulky Sample. Viz níže.
SELECT *FROM Sample;
Jeho výstup je následující:
Nyní uplatníme klauzuli ORDER BY na souboru „vendor_name“. A budeme pozorovat sadu výsledků obdrženou z databáze MySQL:
SELECT *FROM SampleORDER BY vendor_name;
Dostaneme výsledek zobrazující níže uvedený výstup:
Z výše uvedené sady výsledků můžete posoudit, že třídění proběhlo ve výchozím vzestupném pořadí.
Seřadit v sestupném pořadí
V tomto příkladu si ukážeme klauzuli ORDER BY pro seřazení v sestupném pořadí. K tomu ji budeme muset explicitně zadat.
Tady je příkaz MySQL pro seřazení v sestupném pořadí:
SELECT *FROM SampleORDER BY vendor_name DESC;
Výstup SELECT je:
Seřadit podle pole na relativní pozici
K seřazení podle pole na RELATIVNÍ pozici je možné použít klauzuli MySQL ORDER BY.
Pokud v dotazu SELECT uvedeme názvy sloupců, bude první pole na pozici jedna, druhé na pozici dvě atd. Tuto skutečnost si navíc můžeme ověřit na příkladu:
Tady je příkaz SELECT, který zobrazuje pole a řadí je podle relativní pozice.
SELECT # pos_1 pos_2 pos_3 pos_4 sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY 4 DESC;
Tady je sada výsledků, kterou získáte po provedení výše uvedeného příkazu:
Vidíte, že MySQL seřadila podle pole sample_size, které odpovídá čtvrtému sloupci.
Použití ORDER BY pro řazení na dvou sloupcích
Již dříve jsme se zmínili, že můžete použít ORDER BY na jedno nebo více polí. V takovém případě považuje MySQL první pole za primární a druhé za sekundární. Proto nejprve seřadí primární a poté druhé.
V tomto příkladu si tedy ukážeme ORDER BY na dvou sloupcích, jedno pole jako ASC a druhé jako DESC. Také musíme vložit více záznamů, abychom ukázali, že i druhý sloupec se setřídí.
Příkaz INSERT uvedený na začátku výše můžete ignorovat a použít ten níže.
Nyní máme několik řádků se stejnými názvy dodavatelů, ale různými velikostmi vzorků. A nyní budeme řadit na základě polí vendor_name (primární) a sample_size (sekundární).
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC, sample_size DESC;
Tento příkaz MySQL dává tento výsledek:
Vidíte, že všechny hodnoty v primárním poli se seřadily vzestupně. A z výstupu je také patrné, že řazení (v DESC) proběhlo i na druhém z nich.
Nyní zjistíme, jaký by byl výsledek, kdybychom řadili pouze podle názvu dodavatele.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC;
Tento příkaz poskytne následující výsledek:
Z výše uvedeného výsledku vidíme, že řádky patřící společnostem Google a Twitter nebyly seřazeny na základě velikosti jejich vzorků.
Doufáme, že po dokončení tohoto návodu byste se měli cítit pohodlně při používání klauzule ORDER BY v MySQL. Můžete se však více procvičovat na příkladech, abyste získali jistotu.
Chcete-li se také naučit jazyk SQL od základů do hloubky, přečtěte si náš výukový kurz MySQL krok za krokem.
.