Recientemente me topé con códigos de ejemplo, que diferían según estas anotaciones.
SELECT * FROM table LIMIT 0, 1
SELECT * FROM table LIMIT 1
El primer argumento debe considerarse como el desplazamiento si no me equivoco, el propósito de esas dos consultas es limitar la selección a la primera fila de table
¿Hay algún efecto negativo al dejar fuera el desplazamiento / cómo es posible dejarlo fuera en primer lugar? ¿O entendí mal las consultas?
LIMIT 1 OFFSET 0
. Pero realmente debe incluirORDER BY
en cualquier consulta que tengaLIMIT
, a menos que haya una razón específica para no hacerlo.Respuestas:
Como dice la documentación :
La
LIMIT
cláusula se usa en laSELECT
instrucción para restringir el número de filas en un conjunto de resultados. LaLIMIT
cláusula acepta uno o dos argumentos. Los valores de ambos argumentos deben ser constantes enteros positivos o cero.A continuación se ilustra la
LIMIT
sintaxis de la cláusula con 2 argumentos:Veamos qué significan el desplazamiento y el recuento en la cláusula LIMIT:
offset
especifica el desplazamiento de la primera fila a devolver. El desplazamiento de la primera fila es 0, no 1.count
especifica el número máximo de filas para devolver.Cuando se usa
LIMIT
con un argumento, este argumento se usará para especificar el número máximo de filas que se devolverán desde el comienzo del conjunto de resultados.SELECT * FROM tbl
LIMIT count;
La consulta anterior es equivalente a la siguiente consulta con la
LIMIT
cláusula que acepta dos argumentos:SELECT * FROM tbl
LIMIT 0, count;
La
LIMIT
cláusula de uso frecuente conORDER BY
cláusula. Primero, usa laORDER BY
cláusula para ordenar el conjunto de resultados según un determinado criterio, y luego usa laLIMIT
cláusula para encontrar los valores más bajos o más altos.fuente