VicenteSabuco.com

Limit de MySQL en SQL, solución

En MySQL, cuando queremos limitar el rango de registros devueltos por una sentencia SELECT tenemos la opción de utilizar LIMIT:

Select * FROM tabla LIMIT 10,5

Esta sentencia nos permite devolver 5 registros a partir del décimo. El ejemplo sería aplicable por ejemplo a un listado paginado con 5 registros por página y estuviésemos mostrando la tercera de ellas.
El problema es que SQL no tiene la opción de usar LIMIT. En ocasiones podemos solventarlo rápidamente utilizando TOP, con el que podemos devolver un cierto número de registros, pero solo desde el primero de la sentencia. La solución para esto se puede ver en el siguiente código:

SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY id) AS row FROM tabla ) AS alias WHERE row > 10 AND row <= 14

ROW_NUMBER() nos devuelve el número de línea de la consulta empezando por 1. Con este número de secuencia renombrado como row, ya podemos decirle con un simple where que nos lo limite en un cierto intervalo. Ciertamente es una solución en SQL un tanto enrevesada frente a la sencillez del LIMIT ofrecido por MySQL.

[Total:1    Promedio:4/5]

Artículos relacionados

Sobre el autor Ver todos los posts Web del autor

Jose Emeterio

Consultor SEO y experto en analítica Web, se algo de Wordpress, fotografía y tecnología en general. Cuando quiero desconectar suelo viajar y cocinar.