Чи є різниця між 'LIMIT 0, 1' та 'LIMIT 1'?


15

Нещодавно я натрапив на приклади кодів, які відрізнялися цими позначеннями.

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

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

Чи є якийсь негативний ефект при відсутності компенсації / як це можливо у першу чергу залишити його? Або я неправильно зрозумів запити?


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пункт для пошуку найнижчих чи найвищих значень.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.