刚才查了下文档,不能用存储过程,只能使用TOP来分页;贴一个分页算法,大家看看用TOP的效率如何,是否有更好的方式呢?select * from( 
  select top @pageSize * from 
  ( 
    select top (@pageSize*@currentPage) * from page order by _id asc 
  )t1 order by _id desc 
)t2 order by _id asc 如果有更好的方法也希望高手分享,但是必须是用TOP的SQL语句,因为不支持存储过程谢谢大家了。

解决方案 »

  1.   

    LINQ skip take
    SELECT TOP 页大小 * 
    FROM 
            (
            SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
            ) A
    WHERE RowNumber > 页大小*(页数-1)
      

  2.   


    SELECT TOP 页大小 * 
    FROM 
            (
            SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
            ) A
    WHERE RowNumber > 页大小*(页数-1)
      

  3.   

    http://www.cnblogs.com/morningwang/archive/2009/01/02/1367277.html
      

  4.   

    ROW_NUMBER() OVER  是2005的 2000的 怎么办?
      

  5.   

    存储过程不就是SQL么?有区别么
      

  6.   

     lz和ls的都不错   ...
      

  7.   


    存储过程是编译过的,如果在里面用exec之类的执行sql,那和普通的字符串也没啥区别了。
      

  8.   

    select top 10  from table where id not in(select top  " + (pageindex - 1) * 10 + "   id from table order by id DESC)
    pageindex 是当前页哈,就是你要的sql分页呀
      

  9.   

    感谢如梦和tim,都写的很好,
    可惜
    我的情况不能用LINQ也不支持ROW_NUMBER,
    之前,我都把LINQ TO CE自己实现了,悲剧的是SP那边不支持谢谢大家,我再琢磨琢磨这个事情
      

  10.   

    select top "+maximumRows+" * from questioninfos where questioninfoid not in (select top "+(maximumRows*startRowIndex)+" questioninfoid from questioninfos
      

  11.   

    select top "+maximumRows+" * from questioninfos where questioninfoid not in (select top "+(maximumRows*startRowIndex)+" questioninfoid from questioninfos