34,590
社区成员
发帖
与我相关
我的任务
分享
/*---------------------------------------
瘦狼阿亮 | 钱不是问题,问题是没钱!
我乐于享受学习的过程
---------------------------------------*/
DECLARE @SQL varchar(8000)
--测试环境中声明一下@size和@count变量
DECLARE @size int
DECLARE @count int
--设置参数变量值
SET @size=6
SET @count=10
--用连接字符串的方式生成SQL语句,并将SQL语句放置到@SQL变量中
SET @SQL='select top '+CAST(@size AS varchar(10))+' * from message where id not in(select top '
+CAST(@count AS varchar(10))+' id from message order by(id) desc) order by(id) desc'
--为保证语句能够正常运行,首先先打印出生成的SQL语句,用于验证是否符合要求
PRINT (@SQL)
/*执行结果:
以下是生成的语句
select top 6 * from message where id not in(select top 10 id from message order by(id) desc) order by(id) desc
*/
--执行生成的SQL语句(如果经过检查SQL语句没有问题,就可以把上面的print (@sql)注释掉,直接执行查询即可)
--EXEC (@SQL)
2000不支持TOP带变量吧。。。
--使用动态sql
create proc sp_GetTopThing
@count int,
@size int
as
declare @sql varchar(200)
@sql='select top '+convert(varchar(20),@size)+' * from message where id not in(select top '+convert(varchar(20),@count)+' id from message order by(id) desc) order by(id) desc '
exec(@sql)
create procedure sp_GetTopThing
(
@count int,
@size int
)
as
begin
declare @sql varchar(8000)
set @sql='select top '+cast(@size as varchar(20))+' * from message '
set @sql=' where [id] not in (select top '+cast(@count as varchar(20))+' [id] from message order by([id]) desc) order by(id) desc'
exec(@sql)
end