MySQL'de OFFSET ile LIMIT kullanılırken hangi satırlar döndürülür?


140

Aşağıdaki sorguda:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

çıktı olarak kaç sonuç alacağız ve nereden nereye?


Siparişin önce LIMIT, sonra OFFSET olması gerekir. Değilse bir hata verecektir.
Mouser

Yanıtlar:


189

9. kayıttan başlayıp 26. kayıttan biten 18 sonuç döndürecektir.

Sorguyu adresinden okuyarak başlayın offset. Önce 8 ile ofset yaparsınız, bu da sorgunun ilk 8 sonucunu atladığınız anlamına gelir. Daha sonra 18 ile sınırlandırırsınız. Bu da toplam 18 kayıt olan 9, 10, 11, 12, 13, 14, 15, 16 .... 24, 25, 26 kayıtlarını dikkate aldığınız anlamına gelir.

Kontrol bu out.

Ve ayrıca resmi belgeler .


u doğru, herhangi bir fark var mı s / b sınırı 8,18 ve sınır 18 ofset 8
Arun Killu

26
Hayır, aynı. LIMIT 8, 18sadece bir kısayol :)
Mosty Mostacho

1
Ben de karışık olduğu gibi en iyi cevap ben iki basamak arasındaki veri döndürdüğünü düşünüyordum ama şimdi açık :)
MR_AMDEV

47

OFFSET tablodaki başlangıç ​​imlecini gösteren bir anahtar sözcükten başka bir şey değildir

SELECT column FROM table LIMIT 18 OFFSET 8 -- fetch 18 records, begin with record 9 (OFFSET 8)

aynı sonuç formunu alırsınız

SELECT column FROM table LIMIT 8, 18

görsel sunum ( Rbir sıradaki tabloda bir kayıttır)

 OFFSET        LIMIT          rest of the table
 __||__   _______||_______   __||__
/      \ /                \ /
RRRRRRRR RRRRRRRRRRRRRRRRRR RRRR...
         \________________/
                 ||
             your result

3

8 olarak columnbahsettiğiniz OFFSETgibi 9'dan 26'ya kadar çıktı alacaksınız

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.