LIMIT

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

LIMIT je syntaktická konstrukce příkazu SQL pro omezení počtu řádků vrácených příkazem SELECT.

SELECT... LIMIT [offset,]počet_řádků

Většina databázových strojů na místě počtu řádků a offsetu nedovoluje mít sloupce, ale jen číselné literály popř. lokální proměnné v uložených procedurách.

Příklady použití

Tabulky mohou obsahovat veliké množství (v některých případech až desítky milionů) řádků. Chceme-li vypsat jen omezené množství řádků, použijeme v příkazu klauzuli LIMIT s jedním parametrem.

SELECT * FROM zamestnanci LIMIT 100

Vypíše nejvýše prvních 100 řádků z tabulky zamestnanci. Je-li v tabulce méně záznamů než tento limit, výpis skončí po vypsání celé tabulky.

SELECT * FROM zamestnanci ORDER BY plat DESC LIMIT 3

Vypíše tři zaměstnance s nejvyšším platem, seřazené podle něj vzestupně.

Klausule LIMIT se dá taktéž použít pro určení tzv. offsetu

SELECT * FROM zamestnanci ORDER BY plat DESC LIMIT 9,1

Vypíše zaměstnance s 10. nejvyšším platem. +more Jsou-li za klíčovým slovem LIMIT uvedena dvě čísla, pak je limitem druhé číslo v pořadí. První je pak offset, který určuje, kolikátý řádek se má z výsledku vráceném příkazem SELECT, vzít a počítá se od nuly (tedy 0=první, 1=druhý, …). Použití offsetu má většinou význam u výsledků příkazů SELECT, které jsou podle něčeho řazeny.

LIMIT lze použít i s příkazem UPDATE.

UPDATE soutezici SET postupuji_do_finale=0; UPDATE soutezici SET postupuji_do_finale=1 ORDER BY RAND LIMIT 10;

Pokud má tabulka soutezici sloupeček postupuji_do_finale, pak první výše uvedený příkaz tento sloupeček u všech vynuluje a druhý příkaz jej nastaví pro 10 náhodně vybraných - nahodilost zajistí ORDER BY RAND.

Podpora

Klauzule LIMIT je v rámci standardu SQL'92. Podporují ji databáze jako např. MySQL, ProgreSQL, SQLite.

Microsoft Access má pro vrácení omezeného počtu řádků klauzuli TOP s použitím:

SELECT TOP počet_záznamů ... FROM tabulka.

V tomto případě ale nemá možnost určení offsetu, takže pro to potřebuje de facto dva příkazy, složené do sebe. Místo počtu záznamů může za TOP být v některých databázích procento z celkového počtu záznamů.

Databáze Oracle taktéž nepodporují klauzuli LIMIT, ale mají jiný (možná ještě lepší) prostředek, jak určit, které řádky se mají z dotazu vrátit, a to přes podporu prvku ROWNUM, které supluje pořadí vracených řádků. Výše uvedený příklad se zaměstnancem s 10. +more nejvyšším plateb by tak byl v Oracle proveden příkazem:.

SELECT * FROM zamestnanci WHERE ROWNUM=10 ORDER BY plat DESC

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top