|
MS SQL Server - Секция TOP
SQL Server позволяет указать в списке выборки, что вас интересует лишь часть возвращаемого итогового набора. Для этой цели используется секция TOP, которая должна находиться до списка выборки. Секция TOP имеет следующий синтаксис:
[ TOP n [PERCENT] [WITH TIES] ]
Если секция TOP используется с ALL или DISTINCT, она должна находиться после этих ключевых слов.
Секция TOP говорит, что после того, как будут сгенерированы первые n записей, удовлетворяющих запросу, обработку данных следует прекратить. При отсутствии секции ORDER BY записи будут находиться в порядке их нахождения SQL Server. В простейшем варианте секция TOP делает то же, что и ROWCOUNT. Значение n является неотрицательным целым числом. Если n равно нулю, не возвращается ни одна запись. Если n превышает количество записей в таблице, возвращаются все записи.
При наличии параметра PERCENT значение n интерпретируется не как количество записей, а как процент от него. Любое значение больше 100 приводит к возвращению всех записей таблицы. Если в соответствии с заданным процентом должна быть возвращена лишь часть записи, возвращается целая запись.
При наличии параметра WITH TIES секция TOP распространяется на все записи, в которых значение столбца совпадает с его значением в последней возвращенной записи итогового набора. Параметр WITH TIES может использоваться только при наличии секции ORDER BY. Ключевое слово ALL не действует на записи, возвращенные с применением секции TOP. Ключевое слово DISTINCT действует как обычно — возвращается лишь одна копия записей из итогового набора. Следующий фрагмент демонстрирует применение команды TOP:
SELECT TOP 6 * FROM authors ORDER BY qty DESC
Команда возвращает первые шесть записей таблицы authors, упорядоченные по столбцу qty в порядке убывания. В следующем примере продемонстрирован отбор процента записей:
SELECT TOP 6 PERCENT * FROM authors ORDER BY qty DESC
Команда возвращает первые шесть процентов записей таблицы authors, упорядоченные по столбцу qty в порядке убывания. Следующий пример демонстрирует применение параметра TIES в конструкции TOP:
SELECT TOP 6 WITH TIES * FROM authors ORDER BY qty DESC
Команда возвращает первые шесть записей таблицы authors, упорядоченных по столбцу qty в порядке убывания. Если у каких-либо записей после шестой значение qty совпадает с его значением в шестой записи, эти записи также возвращаются.
|