Ограничение результирующих наборов с помощью предложений TOP и PERCENT
Чтобы ограничить количество строк, возвращаемых в результирующий набор, можно использовать предложение TOP.
TOP ( expression ) [ PERCENT ] [ WITH TIES ]
Выражение expression является числовым выражением, которое определяет число возвращаемых строк; или, если указан PERCENT, возвращается процентное соотношение строк результирующего набора (указанное при помощи expression). Например:
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 */.
Если в инструкции SELECT вместе с предложением TOP также содержится предложение ORDER BY, возвращаемые строки выбираются из упорядоченного результирующего набора. Весь результирующий набор строится в определенном порядке, и возвращаются верхние строки n этого набора. Если также указывается WITH TIES, возвращаются все строки, содержащие последнее значение, возвращенное предложением ORDER BY, даже если их количество превышает число, указанное expression.
TOP и SET ROWCOUNT
Еще одним способом ограничения размеров результирующего набора является предварительное выполнение инструкции SET ROWCOUNT n. Есть ряд различий между предложениями SET ROWCOUNT и TOP:
- Ограничение SET ROWCOUNT применяется к построению строк в результирующем наборе после оценки ORDER BY. Если указано предложение ORDER BY, инструкция SELECT завершается, когда строки n выбраны из набора значений, отсортированного согласно заданной классификации ORDER BY.
- Предложение TOP применяется только к той инструкции SELECT, в которой оно указано. SET ROWCOUNT продолжает действовать до выполнения другой инструкции SET ROWCOUNT, например, SET ROWCOUNT 0, которая выключит этот параметр.
Важно!
Использование инструкции SET ROWCOUNT не повлияет на работу инструкций DELETE, INSERT и UPDATE в следующем выпуске SQL Server. При программировании избегайте использования инструкции SET ROWCOUNT с инструкциями DELETE, INSERT и UPDATE и постарайтесь внести изменения в приложения, которые используют ее в настоящее время. Рекомендуется заменить SET ROWCOUNT на TOP для инструкций DELETE, INSERT и UPDATE.
См. также
Другие ресурсы
TOP (Transact-SQL)
SELECT (Transact-SQL)
SET ROWCOUNT (Transact-SQL)