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?
LIMIT 1 OFFSET 0
. Ale naprawdę powinieneś dołączyćORDER BY
do każdego zapytania, które maLIMIT
, chyba że istnieje konkretny powód, aby tego nie robić.Odpowiedzi:
Jak mówi dokumentacja :
LIMIT
Klauzula jest stosowana wSELECT
oświadczeniu, aby ograniczyć liczbę wierszy w zbiorze wynikowym.LIMIT
Punkt przyjmuje jeden lub dwa argumenty. Wartości obu argumentów muszą być zerowe lub dodatnie stałe liczb całkowitych.Poniżej przedstawiono
LIMIT
składnię klauzuli z 2 argumentami:Zobaczmy, co oznaczają offset i count w klauzuli LIMIT:
offset
Określa przesunięcie w pierwszym rzędzie do zwrotu. Przesunięcie pierwszego rzędu wynosi 0, a nie 1.count
Maksymalna liczba określa wierszy do powrotu.W przypadku użycia
LIMIT
z 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
LIMIT
klauzulą, która akceptuje dwa argumenty:SELECT * FROM tbl
LIMIT 0, count;
LIMIT
Klauzula często używany zORDER BY
klauzuli. Najpierw używaszORDER BY
klauzuli, aby posortować zestaw wyników na podstawie określonych kryteriów, a następnie używaszLIMIT
klauzuli, aby znaleźć najniższe lub najwyższe wartości.źródło