Доступные версии документации

Ограничение выборки

Функция

Определение максимального количества выбираемых записей выборки данных.

Спецификация
     
<ограничение выборки>::=
<начало выборки>::=
<количество записей>::=
неотрицательный целочисленный литерал | -1
<процент выборки>::=
неотрицательный целочисленный литерал
Синтаксические правила
  1. <Начало выборки> задает относительный номер (отсчет начинается с 0) записи выборки данных, начиная с которой должна выполняться выборка записей.

  2. Если <начало выборки> не задано, по умолчанию принимается значение 0. В конструкции FETCH FIRST <начало выборки> равно 0.

    Конструкция

    SELECT personid, model FROM auto LIMIT 0,7;

    эквивалента

    SELECT personid, model FROM auto LIMIT 7;
  3. <Количество записей> задает максимальное количество выбираемых записей выборки данных. <Количество записей>, равное -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;
  4. Если <количество записей> равно 0, возвращается пустое множество записей выборки данных.

  5. <Процент выборки> – целочисленное положительное значение в диапазоне [0, 100] Значение <процента выборки> при необходимости округляется с избытком (например, 50% от 3-х записей будет равно 2-м записям).

  6. Конструкция 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;
Общие правила
  1. Если <количество записей> превышает объем выборки данных, то выдаются все записи выборки данных.

  2. При указании опции PERCENT выдается указанный процент от всех записей с <начала выборки>.

  3. Опция 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|
  4. Если <начало выборки> превышает реальный объем выборки, то выдаётся пустая выборка данных.

  5. Конструкция <ограничение выборки> применима ко всем подзапросам

    select model from auto where make in (select make from auto fetch first 5);
Примеры
  1. select count(*) from auto;
    |1000 |
  2. select rowid, make, color from auto fetch first 2;
    | 1 | FORD   | BLACK |
    | 2 | ALPINE | WHITE |
  3. select rowid, make, color from auto where rowid>2 fetch first 3;
    | 3 | AMERICAN MOTORS | BROWN |
    | 4 | MASERATI        | BLACK |
    | 5 | CHRYSLER        | WHITE |
  4. 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;
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter