Ограничение выборки
Функция
Определение максимального количества выбираемых записей выборки данных.
Спецификация
::=
::=
::=
::=
::=
Синтаксические правила
-
< Начало выборки >
задает относительный номер (отсчет начинается с 0) записи выборки данных, начиная с которой должна выполняться выборка записей. -
Если
< начало выборки >
не задано, по умолчанию принимается значение 0. В конструкции FETCH FIRST< начало выборки >
равно 0.Конструкция
SELECT personid, model FROM auto LIMIT 0,7;
эквивалента
SELECT personid, model FROM auto LIMIT 7;
-
< Количество записей >
задает максимальное количество выбираемых записей выборки данных.< Количество записей >
, равное -1, означает выбор записей выборки данных с< начала выборки >
и до конца результата (в этом случае< начало выборки >
является обязательным).select personid, model from auto limit 998,-1; | 999 | BUICK SKYLARK V8 | | 1000 | CHEVROLET IMPALA | Эти конструкции эквивалентны (выбираются все записи): select * from rank_tst limit -1; select * from rank_tst limit 0,-1; select * from rank_tst fetch first -1;
-
Если
< количество записей >
равно 0, возвращается пустое множество записей выборки данных. -
< Процент выборки >
– целочисленное положительное значение в диапазоне [0, 100] Значение< процента выборки >
при необходимости округляется с избытком (например, 50% от 3-х записей будет равно 2-м записям). -
Конструкция
LIMIT
с одним аргументом задает максимальное количество возвращаемых записей выборки данных, т.е. конструкцияLIMIT n
эквивалентнаLIMIT 0,n
.Эти конструкции эквивалентны (выбирается 0 записей); select * from rank_tst limit 2; select * from rank_tst limit 0,2; select * from rank_tst fetch first 2;
Общие правила
-
Если
< количество записей >
превышает объем выборки данных, то выдаются все записи выборки данных. -
При указании опции PERCENT выдается указанный процент от всех записей с
< начала выборки >
. -
Опция WITH TIES заставляет выбрать указанное число или указанный процент записей с
< начала выборки >
, включая все последние совпадающие записи в отсортированной выборке (требуется опции ORDER BY).create or replace table test (i int); insert into test values (1); insert into test values (2); insert into test values (3); insert into test values (3); insert into test values (3); select * from test order by i select * from test order by i fetch first 3; fetch first 3 with ties; или или select * from test order by i select * from test order by i fetch first 42 percent; fetch first 42 percent with ties; I I - - | 1| | 1| | 2| | 2| | 3| | 3| | 3| | 3|
-
Если
< начало выборки >
превышает реальный объем выборки, то выдаётся пустая выборка данных. -
Конструкция
< ограничение выборки >
применима ко всем подзапросамselect model from auto where make in (select make from auto fetch first 5);
-
Рекомендуется использовать ключевое слово LIMIT только в том случае, если предполагается, что выборка для запроса, в котором по сравнению с исходным запросом все внешние соединения заменены внутренними, должна быть непустой. Если же эта выборка может оказаться пустой, то рекомендуется либо не использовать ключевое слово LIMIT, либо использовать хинт /* +NOITER */.
Примеры
-
select count(*) from auto; |1000 |
-
select rowid, make, color from auto fetch first 2; | 1 | FORD | BLACK | | 2 | ALPINE | WHITE |
-
select rowid, make, color from auto where rowid >2 fetch first 3; | 3 | AMERICAN MOTORS | BROWN | | 4 | MASERATI | BLACK | | 5 | CHRYSLER | WHITE |
-
select personid, model from auto limit 900,3; | PERSONID | MODEL | | 901 | CADILLAC DE VILLE | | 902 | BUICK SKYLARK V8 | | 903 | CHEVROLET IMPALA | create or replace table test (i int); insert into table values (1); insert into table values (2); insert into table values (3); insert into table values (4); insert into table values (5); select * from test fetch first 75 percent; I - | 1| | 2| | 3| | 4| select distinct make, model, cylnders from auto order by cylnders desc fetch first 1; select distinct make, model, cylnders from auto order by cylnders desc fetch first 1 with ties; select distinct make, model, cylnders from auto order by cylnders desc fetch first 10 percent; select distinct make, model, cylnders from auto order by cylnders desc fetch first 10 percent with ties;