变量为最高值

osh*_*nen 3 sql t-sql sql-server sql-server-2005

原始问题:

declare @num as int set @num = 5

select top @num col1, col2 from table1
Run Code Online (Sandbox Code Playgroud)

以上不起作用.它不喜欢以这种方式使用@num.需要做什么,所以我可以在top命令旁边有一个变量值?

它给出了错误:

'@num'附近的语法不正确

Sac*_*hag 12

SELECT TOP (@num) a FROM table
Run Code Online (Sandbox Code Playgroud)

从SQL Server 2005开始,支持参数化TOP.


Mit*_*eat 5

SQL Server 2000以后:

declare @num as int 
set @num = 5  

SET ROWCOUNT @num 

select col1, col2 from table1 

SET ROWCOUNT 0 
Run Code Online (Sandbox Code Playgroud)

更新:实际上,你确定这不起作用(我没有2005实例可用):

declare @num as int 
set @num = 5  

select TOP (@num) col1, col2 from table1 
-- Implictly in clustered index order...
Run Code Online (Sandbox Code Playgroud)