Есть ли разница между «LIMIT 0, 1» и «LIMIT 1»?

15

Недавно я наткнулся на примеры кодов, которые отличались этими обозначениями.

SELECT * FROM table LIMIT 0, 1
SELECT * FROM table LIMIT 1

Первый аргумент должен рассматриваться как смещение, если я не ошибаюсь, цель этих двух запросов - ограничить выбор до первой строки table

Есть ли какой-либо негативный эффект при исключении смещения / как можно вообще его исключить? Или я неправильно понял вопросы?

Gimu
источник
3
Нет, вы правильно поняли, они эквивалентны. Это также: LIMIT 1 OFFSET 0. Но вы должны действительно включить ORDER BYв любой запрос LIMIT, если нет особых причин не делать этого.
ypercubeᵀᴹ

Ответы:

13

Как сказано в документации :

Предложение  LIMIT может быть использовано для ограничения количества строк, возвращаемых  SELECT оператором. LIMIT принимает один или два числовых аргумента, которые должны быть неотрицательными целочисленными константами (кроме случаев использования подготовленных операторов).

С двумя аргументами первый аргумент задает смещение первой строки, которую нужно вернуть, а второй - максимальное количество возвращаемых строк. The offset of the initial row is 0 (not 1),

Предложение LIMITиспользуется в SELECTоператоре для ограничения количества строк в наборе результатов. Предложение LIMITпринимает один или два аргумента. Значения обоих аргументов должны быть нулевыми или целочисленными положительными константами.

Ниже показан LIMITсинтаксис предложения с двумя аргументами:

SELECT * FROM tbl
LIMIT offset, count;

Давайте посмотрим, что означают смещение и число в предложении LIMIT:

  • В offsetуказывает смещение первой строки , чтобы вернуться. Смещение первой строки 0, а не 1.
  • countОпределяет максимальное количество возвращаемых строк.

При использовании LIMITс одним аргументом этот аргумент будет использоваться для указания максимального количества строк, возвращаемых из начала результирующего набора.

SELECT * FROM tbl LIMIT count;

Приведенный выше запрос эквивалентен следующему запросу с LIMITпредложением, которое принимает два аргумента:

SELECT * FROM tbl LIMIT 0, count;

Предложение LIMITчасто используется с ORDER BYпредложением. Сначала вы используете ORDER BYпредложение для сортировки набора результатов на основе определенных критериев, а затем вы используете LIMITпредложение для поиска самых низких или самых высоких значений.

oNare
источник