Czy jest jakaś różnica między „LIMIT 0, 1” a „LIMIT 1”?

15

Ostatnio natknąłem się na przykładowe kody, które różniły się tymi notacjami.

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

Pierwszy argument należy uznać za przesunięcie, jeśli się nie mylę, celem tych dwóch zapytań jest ograniczenie wyboru do pierwszego wiersza table

Czy pomijanie offsetu ma jakiś negatywny wpływ / w jaki sposób można go pominąć? A może źle zrozumiałem pytania?

Gimu
źródło
3
Nie, masz rację, są równoważne. Jest to również: LIMIT 1 OFFSET 0. Ale naprawdę powinieneś dołączyć ORDER BYdo każdego zapytania, które ma LIMIT, chyba że istnieje konkretny powód, aby tego nie robić.
ypercubeᵀᴹ

Odpowiedzi:

13

Jak mówi dokumentacja :

LIMIT Klauzula może być używany, aby ograniczyć liczbę wierszy zwracanych przez  SELECT oświadczeniu. LIMIT pobiera jeden lub dwa argumenty liczbowe, które muszą być nieujemnymi stałymi liczbami całkowitymi (z wyjątkiem przypadków użycia przygotowanych instrukcji).

W przypadku dwóch argumentów pierwszy argument określa przesunięcie pierwszego wiersza do zwrócenia, a drugi określa maksymalną liczbę wierszy do zwrócenia. The offset of the initial row is 0 (not 1).

LIMITKlauzula jest stosowana w SELECToświadczeniu, aby ograniczyć liczbę wierszy w zbiorze wynikowym. LIMITPunkt przyjmuje jeden lub dwa argumenty. Wartości obu argumentów muszą być zerowe lub dodatnie stałe liczb całkowitych.

Poniżej przedstawiono LIMITskładnię klauzuli z 2 argumentami:

SELECT * FROM tbl
LIMIT offset, count;

Zobaczmy, co oznaczają offset i count w klauzuli LIMIT:

  • W offsetOkreśla przesunięcie w pierwszym rzędzie do zwrotu. Przesunięcie pierwszego rzędu wynosi 0, a nie 1.
  • countMaksymalna liczba określa wierszy do powrotu.

W przypadku użycia LIMITz jednym argumentem ten argument zostanie użyty do określenia maksymalnej liczby wierszy do zwrócenia od początku zestawu wyników.

SELECT * FROM tbl LIMIT count;

Powyższe zapytanie jest równoważne z następującym zapytaniem z LIMITklauzulą, która akceptuje dwa argumenty:

SELECT * FROM tbl LIMIT 0, count;

LIMITKlauzula często używany z ORDER BYklauzuli. Najpierw używasz ORDER BYklauzuli, aby posortować zestaw wyników na podstawie określonych kryteriów, a następnie używasz LIMITklauzuli, aby znaleźć najniższe lub najwyższe wartości.

oNare
źródło