Недавно я наткнулся на примеры кодов, которые отличались этими обозначениями.
SELECT * FROM table LIMIT 0, 1
SELECT * FROM table LIMIT 1
Первый аргумент должен рассматриваться как смещение, если я не ошибаюсь, цель этих двух запросов - ограничить выбор до первой строки table
Есть ли какой-либо негативный эффект при исключении смещения / как можно вообще его исключить? Или я неправильно понял вопросы?
LIMIT 1 OFFSET 0
. Но вы должны действительно включитьORDER BY
в любой запросLIMIT
, если нет особых причин не делать этого.Ответы:
Как сказано в документации :
Предложение
LIMIT
используется вSELECT
операторе для ограничения количества строк в наборе результатов. ПредложениеLIMIT
принимает один или два аргумента. Значения обоих аргументов должны быть нулевыми или целочисленными положительными константами.Ниже показан
LIMIT
синтаксис предложения с двумя аргументами:Давайте посмотрим, что означают смещение и число в предложении LIMIT:
offset
указывает смещение первой строки , чтобы вернуться. Смещение первой строки 0, а не 1.count
Определяет максимальное количество возвращаемых строк.При использовании
LIMIT
с одним аргументом этот аргумент будет использоваться для указания максимального количества строк, возвращаемых из начала результирующего набора.SELECT * FROM tbl
LIMIT count;
Приведенный выше запрос эквивалентен следующему запросу с
LIMIT
предложением, которое принимает два аргумента:SELECT * FROM tbl
LIMIT 0, count;
Предложение
LIMIT
часто используется сORDER BY
предложением. Сначала вы используетеORDER BY
предложение для сортировки набора результатов на основе определенных критериев, а затем вы используетеLIMIT
предложение для поиска самых низких или самых высоких значений.источник