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.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.