SQLServer2005 利用 ROW_NUMBER 实现分页

假设有表TableA,字段为FieldA, FieldB,查询第10到20条记录,SQL如下:

select * 
from 
    (
        select row_number() over(order by FieldA) as RowNum, * 
        from 
            TableA
    ) t 
where 
  t.RowNum between 10 and 20
posted @ 2007-07-23 16:33 Clark Zheng 阅读(1289) 评论(11)  编辑 收藏 所属分类: C. DB

  回复  引用  查看    
#1楼 2007-07-23 16:52 | volnet(可以叫我大V)      
前两天似乎有个哥们提供了3种方法,呵呵
  回复  引用  查看    
#2楼 [楼主]2007-07-23 17:22 | Clark Zheng      
@volnet(可以叫我大V)
地址在哪?偶去看看,有利用Row_Number这个函数的方法吗?
  回复  引用  查看    
#4楼 2007-07-23 20:30 | volnet(可以叫我大V)      
这样问不行啊,一般人家看完文章不会回头看第二遍,今天算是刚好了,呵呵
  回复  引用  查看    
#5楼 2007-07-23 21:17 | kingwkb [未注册用户]
row_number()我也在用,由于目前数据不多,效率方面看不出来,不知道它的性能如何,谁有时间就做个详细的性能测试吧
  回复  引用  查看    
#6楼 2007-07-23 21:36 | Flykye [未注册用户]
这样的话要是有一万条记录的话
不是要先读取1万条
然后在选出其中的10-20条。。
这样不是很浪费资源?
  回复  引用  查看    
#7楼 [楼主]2007-07-24 08:57 | Clark Zheng      
@volnet(可以叫我大V)
谢谢V大
  回复  引用  查看    
#8楼 [楼主]2007-07-24 09:07 | Clark Zheng      
@Flykye
应该不是那样的,这条SQL是在数据库里一次性解析的,不会那么笨全读出来再抽取其中几条滴,我简单看了一样LinQ to SQL里面的实现,好象也是用的这种方法
  回复  引用  查看    
#9楼 2007-08-03 09:37 | hello [未注册用户]
能不能删除指定的条数
  回复  引用  查看    
#10楼 2007-12-26 10:34 | msn:yinqi025@hotmail.com [未注册用户]
嗯,不错
  回复  引用  查看    
#11楼 2008-05-10 21:26 | 金色海洋(jyk)      
怎么都在猜测,而不去测试呢?