因为top 后面不能是变量。我觉得只能这样写:
declare @i int
select @i=count(*) from tab
where 条件A --求出满足条件A的条数,存在变量@i中
select identity(int,1,1) as id,* into #temp
from tab
where 条件B --取出满足B的记录插入临时表,并加序号
select * from #temp
where id<=@i --从临时表中取出所需要的结果。
这个直接用语句查询!
希望对你有帮助!
对于楼主最后补充的问题。其实我的答案中已经解决了。我给的语句中的变量 @i 其实就是你要的那个 a 值。在这里不能用top 了,我给每条记录加了序号,然后用序号<=@i 同样能取出你要的结果。
TOP a不行吗?如果你的意思是a是个不定的数字,那么在SQL Server2005之前必须拼接查询语句,在2005之后的版本,可以使用TOP (@a)这样的表达式。
按照一楼的做法。。
select top a *
from tab
where 条件B
最好改成存储过程,效率高而且代码易于维护