Limitar los conjuntos de resultados con TOP y PERCENT
Puede utilizar la cláusula TOP para limitar el número de filas devueltas en el conjunto de resultados.
TOP ( expression ) [ PERCENT ] [ WITH TIES ]
expression es una expresión numérica que especifica el número de filas que se van a devolver, o si se especifica PERCENT, el porcentaje (especificado por expression) de las filas del conjunto de resultados que se van a devolver. Por ejemplo:
TOP (120) /*Return the top 120 rows of the result set. */
TOP (15) PERCENT /* Return the top 15 percent of the result set. */.
TOP(@n) /* Return the top @n rows of the result set, with the variable declaration: DECLARE @n AS BIGINT; SET @n = 2 */.
Si una instrucción SELECT que incluya TOP tiene también una cláusula ORDER BY, las filas que se van a devolver se seleccionan del conjunto de resultados ordenado. El conjunto completo de resultados se genera en el orden especificado y se devuelven las n filas superiores del conjunto de resultados ordenado. Si también se especifica WITH TIES, se devuelven todas las filas que contienen el último valor devuelto por la cláusula ORDER BY, aunque al hacerlo se supere el número especificado por expression.
TOP frente a SET ROWCOUNT
El otro método utilizado para limitar el tamaño de un conjunto de resultados consiste en ejecutar una instrucción SET ROWCOUNT n antes de ejecutar otra instrucción. SET ROWCOUNT difiere de TOP en los siguientes aspectos:
- El límite SET ROWCOUNT se aplica a la construcción de filas del conjunto de resultados después de que se evalúe una instrucción ORDER BY. Cuando se especifica ORDER BY, la instrucción SELECT se termina cuando se hayan seleccionado n filas de un conjunto de valores que se han ordenado según la clasificación ORDER BY especificada.
- La cláusula TOP se aplica a la única instrucción SELECT en que se especifica. SET ROWCOUNT permanece activada hasta que se ejecuta otra instrucción SET ROWCOUNT, como, por ejemplo, SET ROWCOUNT 0 para desactivar la opción.
Importante: La utilización de SET ROWCOUNT no afectará a las instrucciones DELETE, INSERT ni UPDATE en la próxima versión de SQL Server. Evite utilizar SET ROWCOUNT con las instrucciones DELETE, INSERT y UPDATE en los nuevos trabajos de desarrollo, y modifique las aplicaciones que la utilizan en la actualidad. Recomendamos que las instrucciones DELETE, INSERT y UPDATE que actualmente utilizan SET ROWCOUNT se vuelvan a escribir para utilizar TOP.
Vea también
Otros recursos
TOP (Transact-SQL)
SELECT (Transact-SQL)
SET ROWCOUNT (Transact-SQL)