Existe alguma diferença entre 'LIMIT 0, 1' e 'LIMIT 1'?

15

Recentemente, deparei-me com códigos de exemplo, que diferiam nessas anotações.

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

O primeiro argumento deve ser considerado o deslocamento, se não estiver errado, o objetivo dessas duas consultas é limitar a seleção até a primeira linha de table

Existe algum efeito negativo ao deixar de fora o deslocamento / como é possível deixá-lo de fora em primeiro lugar? Ou entendi mal as consultas?

Gimu
fonte
3
Não, você acertou, eles são equivalentes. Esta é também: LIMIT 1 OFFSET 0. Mas você realmente deve incluir ORDER BYqualquer consulta que tenha LIMIT, a menos que haja um motivo específico para não fazê-lo.
precisa saber é o seguinte

Respostas:

13

Como a documentação diz:

LIMIT cláusula pode ser usada para restringir o número de linhas retornadas pela  SELECT instrução. LIMIT usa um ou dois argumentos numéricos, que devem ser constantes inteiras não-negativas (exceto ao usar instruções preparadas).

Com dois argumentos, o primeiro argumento especifica o deslocamento da primeira linha a retornar e o segundo especifica o número máximo de linhas a retornar. The offset of the initial row is 0 (not 1).

A LIMITcláusula é usada na SELECTinstrução para restringir o número de linhas em um conjunto de resultados. A LIMITcláusula aceita um ou dois argumentos. Os valores de ambos os argumentos devem ser zero ou constantes inteiras positivas.

A seguir, ilustra a LIMITsintaxe da cláusula com 2 argumentos:

SELECT * FROM tbl
LIMIT offset, count;

Vamos ver o que o deslocamento e a contagem significam na cláusula LIMIT:

  • O offsetespecifica o deslocamento da primeira linha a retornar. O deslocamento da primeira linha é 0, não 1.
  • O countespecifica o número máximo de linhas a serem retornadas.

Quando você usa LIMITum argumento, esse argumento será usado para especificar o número máximo de linhas a serem retornadas desde o início do conjunto de resultados.

SELECT * FROM tbl LIMIT count;

A consulta acima é equivalente à seguinte consulta com a LIMITcláusula que aceita dois argumentos:

SELECT * FROM tbl LIMIT 0, count;

A LIMITcláusula frequentemente usada com ORDER BYcláusula. Primeiro, você usa a ORDER BYcláusula para classificar o conjunto de resultados com base em um determinado critério e, em seguida, usa a LIMITcláusula para encontrar valores mais baixos ou mais altos.

oNare
fonte