Y a-t-il une différence entre «LIMIT 0, 1» et «LIMIT 1»?

15

Je suis récemment tombé sur des exemples de codes, qui différaient par ces notations.

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

Le premier argument doit être considéré comme le décalage si je ne me trompe pas, le but de ces deux requêtes est de limiter la sélection à la première ligne de table

Y a-t-il un effet négatif en omettant le décalage / comment est-il possible de le laisser en premier lieu? Ou ai-je mal compris les requêtes?

Gimu
la source
3
Non, vous avez bien compris, ils sont équivalents. Ceci est également: LIMIT 1 OFFSET 0. Mais vous devez vraiment l'inclure ORDER BYdans toute requête qui a LIMIT, sauf s'il y a une raison spécifique de ne pas le faire.
ypercubeᵀᴹ

Réponses:

13

Comme le dit la documentation :

La  LIMIT clause peut être utilisée pour limiter le nombre de lignes renvoyées par l'  SELECT instruction. LIMIT prend un ou deux arguments numériques, qui doivent tous deux être des constantes entières non négatives (sauf lors de l'utilisation d'instructions préparées).

Avec deux arguments, le premier argument spécifie le décalage de la première ligne à renvoyer et le second spécifie le nombre maximal de lignes à renvoyer. The offset of the initial row is 0 (not 1).

La LIMITclause est utilisée dans l' SELECTinstruction pour limiter le nombre de lignes dans un jeu de résultats. La LIMITclause accepte un ou deux arguments. Les valeurs des deux arguments doivent être nulles ou des constantes entières positives.

Ce qui suit illustre la LIMITsyntaxe de la clause avec 2 arguments:

SELECT * FROM tbl
LIMIT offset, count;

Voyons ce que le décalage et le nombre signifient dans la clause LIMIT:

  • Le offsetspécifie le décalage de la première ligne à renvoyer. Le décalage de la première ligne est 0, pas 1.
  • Le countspécifie le nombre maximal de lignes à renvoyer.

Lorsque vous utilisez LIMITun seul argument, cet argument sera utilisé pour spécifier le nombre maximal de lignes à renvoyer depuis le début du jeu de résultats.

SELECT * FROM tbl LIMIT count;

La requête ci-dessus est équivalente à la requête suivante avec la LIMITclause qui accepte deux arguments:

SELECT * FROM tbl LIMIT 0, count;

La LIMITclause souvent utilisée avec ORDER BYclause. Tout d'abord, vous utilisez la ORDER BYclause pour trier l'ensemble de résultats en fonction d'un certain critère, puis vous utilisez la LIMITclause pour rechercher les valeurs les plus basses ou les plus élevées.

oNare
la source