Apakah ada perbedaan antara 'LIMIT 0, 1' dan 'LIMIT 1'?

15

Saya baru-baru ini menemukan kode contoh, yang berbeda dengan notasi ini.

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

Argumen pertama harus dianggap sebagai offset jika saya tidak salah, tujuan dari dua pertanyaan tersebut adalah untuk membatasi pilihan hingga baris pertama dari table

Apakah ada efek negatif ketika meninggalkan offset / bagaimana mungkin meninggalkannya di tempat pertama? Atau apakah saya salah memahami pertanyaan?

Gimu
sumber
3
Tidak, Anda benar, mereka setara. Ini juga: LIMIT 1 OFFSET 0. Tetapi Anda harus benar-benar memasukkan ORDER BYdalam permintaan apa pun yang memiliki LIMIT, kecuali ada alasan khusus untuk tidak melakukannya.
ypercubeᵀᴹ

Jawaban:

13

Seperti yang dikatakan dalam dokumentasi :

The  LIMIT klausa dapat digunakan untuk membatasi jumlah baris yang dikembalikan oleh  SELECT pernyataan. LIMIT mengambil satu atau dua argumen numerik, yang keduanya harus berupa konstanta integer nonnegatif (kecuali saat menggunakan pernyataan yang disiapkan).

Dengan dua argumen, argumen pertama menentukan offset dari baris pertama untuk kembali, dan argumen kedua menentukan jumlah maksimum baris untuk kembali. The offset of the initial row is 0 (not 1).

The LIMITklausul digunakan dalam SELECTpernyataan untuk membatasi jumlah baris dalam satu set hasil. The LIMITklausul menerima satu atau dua argumen. Nilai dari kedua argumen harus nol atau konstanta integer positif.

Berikut ini mengilustrasikan LIMITsintaks klausa dengan 2 argumen:

SELECT * FROM tbl
LIMIT offset, count;

Mari kita lihat apa arti offset dan penghitungan dalam klausa LIMIT:

  • The offsetmenentukan offset dari baris pertama untuk kembali. Offset baris pertama adalah 0, bukan 1.
  • The countnumber menetapkan maksimum baris untuk kembali.

Saat Anda menggunakan LIMITdengan satu argumen, argumen ini akan digunakan untuk menentukan jumlah maksimum baris untuk kembali dari awal set hasil.

SELECT * FROM tbl LIMIT count;

Kueri di atas setara dengan kueri berikut dengan LIMITklausa yang menerima dua argumen:

SELECT * FROM tbl LIMIT 0, count;

The LIMITklausul sering digunakan dengan ORDER BYklausa. Pertama, Anda menggunakan ORDER BYklausa untuk mengurutkan hasil yang ditetapkan berdasarkan kriteria tertentu, dan kemudian Anda menggunakan LIMITklausa untuk menemukan nilai terendah atau tertinggi.

oNare
sumber