SQL数据库 先从大到小排序 然后取10到15之间的数据????

解决方案 »

  1.   


    select *
    from (
        select *,rid = row_number() over (order by colname desc)
        from tb
    ) temp
    where rid between 10 and 15
    order by rid
      

  2.   

    1楼是2005以上的做法。
    我来个2000以上的做法
    select top (15-10+1) * 
    from ( select top 15 * from tb order by colname desc ) as a
    order by  colname 
      

  3.   


    --SQL Server 2000
    select top (5) * 
    from ( select top 15 * from 表 order by 排序列 desc ) as a
    order by  排序列  desc--SQL Server 2005,2008,2008R2,2012通用方法
    select *
    from (
        select *,row_number() over (order by 排序列 desc) as id
        from 表
    ) a
    where id between 10 and 15
    order by id--SQL Server 2012select * from 表 order by 排序列 desc OFFSET 10 ROW FETCH NEXT 5 ROWS ONLY
    SQL Server 2012在分页上的语法精简的还是比较方便的
      

  4.   

    Select Top 15 * From tb
    Order by id
    Except 
    Select Top 10 * from tb
    Order by id
      

  5.   

    select top (5) *  from ( select top 15 * from 表 order by 排序列 desc ) as a order by  排序列  desc
      

  6.   

    亲自验证过,在sqlserver2008上,果然可行
      

  7.   

    分页一般性能都耗费在内部结果集的order by上了,运用合适的索引视图或者使用索引的默认排序,很多时候都可以提高或者避免分页的“慢”。