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?
LIMIT 1 OFFSET 0
. Mais vous devez vraiment l'inclureORDER BY
dans toute requête qui aLIMIT
, sauf s'il y a une raison spécifique de ne pas le faire.Réponses:
Comme le dit la documentation :
La
LIMIT
clause est utilisée dans l'SELECT
instruction pour limiter le nombre de lignes dans un jeu de résultats. LaLIMIT
clause accepte un ou deux arguments. Les valeurs des deux arguments doivent être nulles ou des constantes entières positives.Ce qui suit illustre la
LIMIT
syntaxe de la clause avec 2 arguments:Voyons ce que le décalage et le nombre signifient dans la clause LIMIT:
offset
spécifie le décalage de la première ligne à renvoyer. Le décalage de la première ligne est 0, pas 1.count
spécifie le nombre maximal de lignes à renvoyer.Lorsque vous utilisez
LIMIT
un 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
LIMIT
clause qui accepte deux arguments:SELECT * FROM tbl
LIMIT 0, count;
La
LIMIT
clause souvent utilisée avecORDER BY
clause. Tout d'abord, vous utilisez laORDER BY
clause pour trier l'ensemble de résultats en fonction d'un certain critère, puis vous utilisez laLIMIT
clause pour rechercher les valeurs les plus basses ou les plus élevées.la source