Классика баз данных - статьи

       

Обновленный оператор TOP


Оператор TOP широко используется для ограничения числа строк, возвращаемых командой SELECT. В предыдущих версиях SQL Server, оператор TOP принимал в качестве параметра только константу. В SQL Server 2005 параметром этого оператора может быть переменная, выражение или вложенный вопрос.

Например, следующим образом можно осуществить выборку такого числа моделей некоторого производителя, которое соответствует среднему количеству моделей каждого производителя в таблице Products: SELECT TOP (SELECT AVG(AvgNum) * FROM (SELECT COUNT(*) AS AvgNum FROM Products GROUP BY BrandID) AS NumTable) P.Model FROM Products P

Для использования в качестве параметра оператора TOP переменной, выражения или вложенного запроса необходимо заключать ее в круглые скобки: SELECT TOP (@Num) * FROM ИмяТаблицы

При использовании константы, скобки не обязательны в команде SELECT, но обязательны при использовании с командами, изменяющими данные, например: DELETE TOP(10) FROM Orders ORDER BY Date DESC

В предыдущих версиях SQL Server для использования переменной в качестве параметра оператора TOP приходилось прибегать к сложным конструкциям или динамическому созданию запроса. DECLARE @DynamicQuery varchar(100)

SET @DynamicQuery = 'SELECT TOP ' + CAST (@N AS varchar) + ' * FROM Products'

EXECUTE(@DynamicQuery)



Содержание раздела