Prvních pár řádků: LIMIT

Často nechcete všechny řádky, jen několik prvních: tři nejnovější objednávky, pět nejlevnějších her. LIMIT (omezení) na úplném konci dotazu říká, kolik řádků nejvýš ukázat:

SELECT id, datum
FROM objednavky
ORDER BY datum DESC
LIMIT 3;
iddatum
302025-12-22
292025-12-12
282025-11-28

ORDER BY řádky seřadí a LIMIT nechá první tři. Spolu odpovídají na otázky typu „prvních N“: nejdražší, nejnovější, nejlépe hodnocené. Pokud je řádků méně, než kolik limit dovoluje, dostanete prostě všechny.

LIMIT bez ORDER BY je loterie. SELECT nazev FROM hry LIMIT 3; ukáže tři hry, ale které, to zaručené není: bez ORDER BY přicházejí řádky v libovolném pořadí, jak už víte. To nevadí, když se chcete jen rychle podívat do velké tabulky, ale vadí to vždycky, když se otázka ptá na první, nejlepší nebo poslední.

Pozor na stejné hodnoty na hranici. Tři nejlevnější hry? Cube Logic za 129 Kč, Word Quest za 249 Kč a pak tři hry za 399 Kč. S ORDER BY cena LIMIT 3 je na databázi, která z nich dostane třetí místo. Rozhodne druhý sloupec řazení:

SELECT nazev, cena
FROM hry
ORDER BY cena, nazev
LIMIT 3;
nazevcena
Cube Logic129
Word Quest249
Bakery Story399

LIMIT funguje v SQLite, PostgreSQL i MySQL. Některé jiné databáze ho píšou jinak, třeba SELECT TOP 3 … v SQL Serveru nebo FETCH FIRST 3 ROWS ONLY na konci v Oraclu, ale myšlenka je stejná.

Typická chyba: LIMIT před ORDER BY. LIMIT je vždycky poslední částí dotazu, takže … LIMIT 3 ORDER BY cena; skončí chybou near "ORDER": syntax error.

Pokyny

Ukažte název a cenu tří nejdražších her, nejdražší jako první. Výsledek má jen tyto tři řádky:

nazevcena
Knight's Oath1599
Goal Rush1299
Ice Hockey Pro1199

Pod tím ukažte název a věkovou hranici (vek_od) tří her pro nejstarší hráče: nejvyšší věková hranice jako první a hry se stejnou hranicí podle abecedy:

nazevvek_od
Zombie Town18
Dragon Forge16
Knight's Oath16

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

5/12