select top (n -m) *
from (select top n * from table order by id desc) a
order by id asc

解决方案 »

  1.   

    select top (n -m) *
    from (select top n * from table) a
    order by id desc
      

  2.   

    我按你们给我发的帖子做的 select  top  (8 -2)  *  
    from  (select  top  8  *  from  shunxu  order  by  id  desc)  a  
    order  by  id  asc  可系统提示为什么是
    服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: '(' 附近有语法错误。
    服务器: 消息 156,级别 15,状态 1,行 2
    在关键字 'order' 附近有语法错误。
      

  3.   

    select  top  (8 - 2)  *  
    from  (select  top  8  *  from  shunxu  order  by  id )  a  
    order  by  id  desc
      

  4.   

    错了,top 后不支持计算create table tb(id int)
    go
    declare @m int
    declare @n int
    set @m = 8
    set @n = 6
    set @n = @m - @n 
    declare @i int
    set @i = 1
    while @I <20
    begin
      insert tb select @i
    select @i = @i + 1
    end
    select * from tb
    exec('select  top ' +@n+' *
    from  (select  top  '+@m+'  *  from  tb  order  by  id )  a  
    order  by  id  desc')drop table tb/*id          
    ----------- 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19(所影响的行数为 19 行)id          
    ----------- 
    8
    7
    */
      

  5.   

    select top 6 *
    from (select top 8 * from table) a
    order by id desc
      

  6.   

    select top n * from (select top 999999 * from (select top M from table order by id asc) a order by a.id desc ) b
      

  7.   

    我谢谢两位大哥哥对我的帮助。
    由于我们寝晚上11点熄灯,所以没有及时看到你们的回帖,对此我表示道歉,希望你们谅解。我又按 happyflystone(没枪的狙击手) 大哥做的修改了一下
    例:从表‘tb’查第6行到第8行的数据
    select * from( 
    select top 3 *                    -----(8-6+1)
    from (select top 8 * from tb) a
    order by id desc) b order by id --------------------------------------------------
    id
    -----------
    6
    7
    8我想用存储过程写一下回更好些
    但写到这里就不知怎么去写了
    create procedure ord
    @m int ,@n int 
    as 
    declare @Sub int 
    set @Sub=@n-@m+1
    --select * from( 
    exec('select * from( 
    select top '+@Sub+' *
    from (select top '+@n+' * from tb) a
    order by id desc) b order by id ')
    exec ord @m=6,@n=8系统提示我
    服务器: 消息 208,级别 16,状态 6,过程 ord,行 11
    对象名 'ord' 无效。我希望各位大哥再帮我一下,小弟不胜感激