动态SELECT TOP @var在SQL Server中

本文翻译自:Dynamic SELECT TOP @var In SQL Server

How can I have a dynamic variable setting the amount of rows to return in SQL Server? 如何设置动态变量来设置SQL Server中要返回的行数? Below is not valid syntax in SQL Server 2005+: 以下是SQL Server 2005+中无效的语法:

DECLARE @count int
SET @count = 20

SELECT TOP @count * FROM SomeTable

#1楼

参考:https://stackoom.com/question/JM6/动态SELECT-TOP-var在SQL-Server中


#2楼

SELECT TOP (@count) * FROM SomeTable

这仅适用于SQL 2005+


#3楼

The syntax "select top (@var) ..." only works in SQL SERVER 2005+. 语法“select top(@var)...”仅适用于SQL SERVER 2005+。 For SQL 2000, you can do: 对于SQL 2000,您可以执行以下操作:

set rowcount @top

select * from sometable

set rowcount 0 

Hope this helps 希望这可以帮助

Oisin. [287]莪。

(edited to replace @@rowcount with rowcount - thanks augustlights) (编辑用rowcount替换@@ rowcount - 感谢augustlights)


#4楼

In x0n's example, it should be: 在x0n的例子中,它应该是:

SET ROWCOUNT @top

SELECT * from sometable

SET ROWCOUNT 0

http://msdn.microsoft.com/en-us/library/ms188774.aspx http://msdn.microsoft.com/en-us/library/ms188774.aspx


#5楼

Its also possible to use dynamic SQL and execute it with the exec command: 它也可以使用动态SQL并使用exec命令执行它:

declare @sql  nvarchar(200), @count int
set @count = 10
set @sql = N'select top ' + cast(@count as nvarchar(4)) + ' * from table'
exec (@sql)

#6楼

Or you just put the variable in parenthesis 或者您只需将变量放在括号中

DECLARE @top INT = 10;

SELECT TOP (@Top) *
FROM <table_name>;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值