Limitation des jeux de résultats à l'aide de TOP et de PERCENT
Vous pouvez utiliser la clause TOP pour limiter le nombre de lignes qui sont retournées dans l'ensemble de résultats.
TOP ( expression ) [ PERCENT ] [ WITH TIES ]
expression est une expression numérique qui spécifie le nombre de lignes à retourner ; toutefois, si vous utilisez PERCENT, c'est le pourcentage (indiqué par expression) de lignes de l'ensemble de résultats qui est retourné. Exemple :
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 une instruction SELECT incluant la clause TOP comporte également une clause ORDER BY, les lignes à retourner sont sélectionnées après le classement de l'ensemble de résultats. La totalité de l'ensemble de résultats est générée dans l'ordre spécifié et les n premières lignes du jeu classé sont retournées. Si WITH TIES est également spécifié, toutes les lignes qui contiennent la dernière valeur retournée par la clause ORDER BY sont retournées, même si cette opération dépasse le nombre spécifié par expression.
TOP et SET ROWCOUNT
Vous pouvez également limiter la taille d'un ensemble de résultats en exécutant l'instruction SET ROWCOUNT n avant l'exécution d'une instruction. SET ROWCOUNT diffère de TOP sur les points suivants :
- La limite SET ROWCOUNT s'applique lors de la construction des lignes de l'ensemble de résultats après qu'une clause ORDER BY soit prise en compte. Lorsque ORDER BY est spécifié, l’instruction SELECT est terminée lorsque n lignes ont été sélectionnées à partir d’un jeu de valeurs trié conformément au classement ORDER BY spécifié.
- La clause TOP s'applique à la seule instruction SELECT où elle est définie. SET ROWCOUNT reste effectif jusqu'à l'exécution d'une autre instruction SET ROWCOUNT, comme par exemple SET ROWCOUNT 0 pour désactiver l'option.
Important : L'utilisation de SET ROWCOUNT n'affectera pas les instructions DELETE, INSERT et UPDATE dans la prochaine version de SQL Server. Évitez d'utiliser SET ROWCOUNT avec les instructions DELETE, INSERT et UPDATE dans les nouvelles tâches de développement et pensez à modifier les applications qui l'utilisent actuellement. Il est recommandé de réécrire les instructions DELETE, INSERT et UPDATE qui utilisent actuellement SET ROWCOUNT afin qu'elles recourent à TOP.
Voir aussi
Autres ressources
TOP (Transact-SQL)
SELECT (Transact-SQL)
SET ROWCOUNT (Transact-SQL)