Par*_*esh 205 sql t-sql sql-server sql-server-2005
declare @top int
set @top = 5
select top @top * from tablename
Run Code Online (Sandbox Code Playgroud)
可能吗?
或任何想法这样的逻辑(我不想使用动态查询)?
Guf*_*ffa 381
是的,在SQL Server 2005中,可以在top子句中使用变量.
select top (@top) * from tablename
Run Code Online (Sandbox Code Playgroud)
Esp*_*spo 38
SQL Server 2005实际上允许我们使用变量,表达式或语句来参数化TOP子句.所以你可以这样做:
SELECT TOP (@foo) a FROM table ORDER BY a
SELECT TOP (SELECT COUNT(*) FROM somewhere else) a FROM table ORDER BY a
SELECT TOP (@foo + 5 * 4 / 2) a FROM table ORDER BY a
Run Code Online (Sandbox Code Playgroud)
Bri*_*edt 25
在2005年及以后,你可以这样做,因为这个帖子中有几个回复.
鲜为人知的是,你可以通过使用SET ROWCOUNT在2k中实现这一点.
-- Works in all versions
SELECT TOP 10
-- Does not work on 2000
SELECT TOP (10)
SELECT TOP (@rows)
-- Works in both 2ooo and 2oo5
SET ROWCOUNT @max
SELECT *
FROM ...
SET ROWCOUNT 0
Run Code Online (Sandbox Code Playgroud)
注意,如果你最后忘记了SET ROWCOUNT 0,那么限制仍然存在..你最终会很难找到错误:-)
| 归档时间: |
|
| 查看次数: |
87421 次 |
| 最近记录: |