declare   @count   int 
declare   @coun1   int   
declare   @sql   varchar(100)   
set   @count   =   10  
set   @coun1   =   2 
set   @sql='select top 10 * from(select   top   '+   cast(@count*@coun1   as   varchar(9))   +'   *   from   users) a order by id desc'   
exec(@sql)
这个能执行,下面的为什么就不行?提示:'order' 附近有语法错误。
set   @coun1   =   2 是测试用的。
我该怎么把结果的排序反过来呢??????
declare   @count   int 
declare   @coun1   int   
declare   @sql   varchar(100)   
set   @count   =   10  
set   @coun1   =   2 
set   @sql='select * from(select top 10 * from(select   top   '+   cast(@count*@coun1   as   varchar(9))   +'   *   from   users) a order by id desc)b order by id'   
exec(@sql)

解决方案 »

  1.   

    最后一个你的潜逃不对
    这是一个从多少行到多少行的问题
    如果你想把结果反过来的话
    在第一个后面order by id asc
    就行了
      

  2.   

    set @sql='select * from(select top 10 * from(select top '+ cast(@count*@coun1 as varchar(9)) +' * from users) a order by id desc)b order by id'b order by id' 多了一个B 去掉  加上desc
      

  3.   

    那个b时必须的吧
    因为lz好像嵌套了两个select
      

  4.   

    declare   @sql   varchar(100) 这个定义太小了,被自动截取了
    定义为declare   @sql   varchar(400) 就可以了。看了半天就说没问题,调试了一下才发现,嘿嘿~~~