Obtener n registros con Top de SQL Server
En ocasiones necesitamos capturar las primeras o ultimas filas de una consulta, es posible obtener n registros con Top de SQL Server.
La cláusula Top limita el número de filas (rows) devueltas en una consulta indicando el total de registros.
Obtiene los primeros n registros de la consulta (de arriba hacia abajo).
Es recomendable utilizar la cláusula Order by en conjunto con Top, para ordenar las filas y dar certeza de los registros obtenidos.
Podemos utilizar Top junto a otras clausulas como select, update, delete, insert, etc.
Obtener los primeros registros con Top
Utilicemos una consulta select para obtener los primeros 5 registros de una consulta a la base de datos NorthWind.
SELECT TOP 10 * FROM Products ORDER BY UnitsInStock ASC;
- Después de la cláusula select se coloca Top seguido del número de registros.
- Con order by ordeno los productos con menos stock.
Como resultado podemos obtener el siguiente resultado.
Obtener los últimos registros con Top
Se había comentado que como buena práctica utilizar Order by junto con Top, para esta tarea dependemos de esta cláusula.
Al ordenar la consulta select en forma descendente colocamos los últimos registros en primero lugar.
SELECT TOP 5 * FROM Products ORDER BY UnitsInStock DESC;
Toda la consulta es similar al primer ejemplo, únicamente cambia el orden, el resultado es el siguiente.
Podría interesarte ORDER BY y UNION en SQL Server
Observaciones
Las filas de que obtiene dependen del orden en las columnas implementado con la cláusula Order by.
Si no se utiliza Order by, las filas se ordenan de acuerdo con la primera columna, que pueden ser números o letras.