Những hàng nào được trả về khi sử dụng LIMIT với OFFSET trong MySQL?


140

Trong truy vấn dưới đây:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

Có bao nhiêu kết quả chúng ta sẽ nhận được như là đầu ra và từ đâu đến đâu?


Đơn hàng cần phải GIỚI HẠN trước, sau đó là OFFSET. Nếu không nó sẽ ném một lỗi.
Mouser

Câu trả lời:


189

Nó sẽ trả về 18 kết quả bắt đầu từ bản ghi số 9 và hoàn thành bản ghi số 26.

Bắt đầu bằng cách đọc truy vấn từ offset. Đầu tiên bạn bù 8, có nghĩa là bạn bỏ qua 8 kết quả đầu tiên của truy vấn. Sau đó, bạn giới hạn bằng 18. Có nghĩa là bạn xem xét các hồ sơ 9, 10, 11, 12, 13, 14, 15, 16 .... 24, 25, 26 trong tổng số 18 hồ sơ.

Kiểm tra này .

Và cũng là tài liệu chính thức .


u là chính xác, có sự khác biệt nào b / w giới hạn 8,18 và giới hạn 18 bù 8
Arun Killu

26
Không, nó giống nhau. LIMIT 8, 18chỉ là một lối tắt :)
Mosty Mostacho

1
Câu trả lời hay nhất vì tôi cũng bối rối, tôi đã nghĩ rằng nó trả về dữ liệu giữa hai chữ số nhưng giờ thì rõ ràng :)
MR_AMDEV

47

OFFSET không là gì ngoài một từ khóa để chỉ con trỏ bắt đầu trong bảng

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

bạn sẽ nhận được mẫu kết quả tương tự

SELECT column FROM table LIMIT 8, 18

biểu diễn trực quan ( Rlà một bản ghi trong bảng theo thứ tự nào đó)

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

3

Bạn sẽ nhận được đầu ra từ columngiá trị 9 đến 26 như bạn đã đề cập OFFSETlà 8

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.