Резюме :в този урок ще научите как да използвате SQLite LIMIT клауза за ограничаване на броя на редовете, върнати от заявка.
Въведение в SQLite LIMIT клауза
LIMIT Клаузата е незадължителна част от SELECT изявление. Използвате LIMIT клауза за ограничаване на броя на редовете, върнати от заявката.
Например SELECT изявлението може да върне един милион реда. Въпреки това, ако имате нужда само от първите 10 реда в набора от резултати, можете да добавите LIMIT клауза към SELECT изявление за извличане на 10 реда.
Следното илюстрира синтаксиса на LIMIT клауза.
SELECT
column_list
FROM
table
LIMIT row_count;Code language: SQL (Structured Query Language) (sql)
row_count е положително цяло число, което определя броя на върнатите редове.
Например, за да получите първите 10 реда в tracks таблица, използвате следния израз:
SELECT
trackId,
name
FROM
tracks
LIMIT 10;Code language: SQL (Structured Query Language) (sql) Опитайте го
Ако искате да получите първите 10 реда, започвайки от 10-ия ред на набора от резултати, използвайте OFFSET ключова дума, както следва:
SELECT
column_list
FROM
table
LIMIT row_count OFFSET offset;Code language: SQL (Structured Query Language) (sql)
Или можете да използвате следния съкратен синтаксис на LIMIT OFFSET клауза:
SELECT
column_list
FROM
table
LIMIT offset, row_count;Code language: SQL (Structured Query Language) (sql)
Например, за да получите 10 реда, започващи от 11 ред в tracks таблица, използвате следния израз:
SELECT
trackId,
name
FROM
tracks
LIMIT 10 OFFSET 10;Code language: SQL (Structured Query Language) (sql) Опитайте го
Често срещате употребите на OFFSET в уеб приложения за пагиниране на набори от резултати.
SQLite LIMIT и ORDER BY клауза
Винаги трябва да използвате LIMIT клауза с ORDER BY клауза. Защото искате да получите определен брой редове в определен ред, а не в неопределен ред.
ORDER BY клаузата се появява преди LIMIT клауза в SELECT изявление. SQLite сортира резултатния набор, преди да получи броя на редовете, посочени в LIMIT клауза.
SELECT
column_list
FROM
table
ORDER BY column_1
LIMIT row_count;Code language: SQL (Structured Query Language) (sql) Например, за да получите първите 10 най-големи песни по размер, използвате следната заявка:
SELECT
trackid,
name,
bytes
FROM
tracks
ORDER BY
bytes DESC
LIMIT 10;Code language: SQL (Structured Query Language) (sql) Опитайте го
За да получите 5-те най-къси песни, сортирате песните по дължината, определена от колона милисекунди, като използвате ORDER BY клауза и вземете първите 5 реда с помощта на LIMIT клауза.
SELECT
trackid,
name,
milliseconds
FROM
tracks
ORDER BY
milliseconds ASC
LIMIT 5;Code language: SQL (Structured Query Language) (sql) Опитайте го
Получаване на n най-висока и най-ниска стойност
Можете да използвате ORDER BY и LIMIT клаузи, за да получите n реда с най-висока или най-ниска стойност. Например, може да искате да знаете втората най-дълга песен, третата най-малка песен и т.н.
За да направите това, използвайте следните стъпки:
- Първо, използвайте
ORDER BYза да сортирате резултатния набор във възходящ ред, в случай че искате да получите най-ниската стойност n, или низходящ, ако искате да получите най-високата стойност n. - Второ, използвайте
LIMIT OFFSETклауза, за да получите n най-висок или n най-нисък ред.
Следващият оператор връща втория най-дълъг запис в tracks таблица.
SELECT
trackid,
name,
milliseconds
FROM
tracks
ORDER BY
milliseconds DESC
LIMIT 1 OFFSET 1;Code language: SQL (Structured Query Language) (sql) Опитайте го
Следното изявление получава третата най-малка песен в tracks таблица.
SELECT
trackid,
name,
bytes
FROM
tracks
ORDER BY
bytes
LIMIT 1 OFFSET 2;Code language: SQL (Structured Query Language) (sql) Опитайте го
В този урок научихте как да използвате SQLite LIMIT клауза за ограничаване на броя на редовете, върнати от заявката.