Quais linhas são retornadas ao usar LIMIT com OFFSET no MySQL?

140

Na consulta abaixo:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

Quantos resultados obteremos como saída e de onde para onde?

Arun Killu
fonte
O pedido precisa ser LIMIT primeiro e depois OFFSET. Caso contrário, lançará um erro.
Mouser

Respostas:

189

Ele retornará 18 resultados começando no registro # 9 e terminando no registro # 26.

Comece lendo a consulta em offset. Primeiro você desloca 8, o que significa que você pula os 8 primeiros resultados da consulta. Então você limita por 18. O que significa que você considera os registros 9, 10, 11, 12, 13, 14, 15, 16 .... 24, 25, 26, que são um total de 18 registros.

Veja isso .

E também a documentação oficial .

Mosty Mostacho
fonte
u estão correctas, não existe qualquer diferença b / w limite de 8,18 e o limite 18 de deslocamento 8
Arun Killu
26
Não, é o mesmo. LIMIT 8, 18é apenas um atalho :)
Mosty Mostacho
1
Melhor resposta como eu também estava confuso Eu estava pensando que ele retorna os dados entre os dois dígitos, mas agora é claro :)
MR_AMDEV
47

OFFSET nada mais é que uma palavra-chave para indicar o cursor inicial na tabela

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

você obteria o mesmo formulário de resultado

SELECT column FROM table LIMIT 8, 18

representação visual ( Ré um registro na tabela em alguma ordem)

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

Você obterá a saída do columnvalor 9 a 26, como mencionado OFFSETcomo 8

Mahesh Patil
fonte