热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> 数据库>>正文内容

每日小知识-sql获取第n行

发布时间:2011年03月14日点击数: 佚名

如何在一个没有主键的表中获取第n行数据,在sql2005中可以用row_number,但是必须指定排序列,否则你就不得不用select into来过渡到临时表并增加一个排序字段。
用游标的fetch absolute语句可以获取绝对行数下的某行数据,测试代码如下:

  1. set nocount on 
  2. --建立测试环境并插入数据,并且表没有主键 
  3. create table test(id int ,name varchar(10)) 
  4. insert into test select 999,'jinjazz'    
  5. insert into test select 888,'csdn'  
  6. insert into test select 999,'sqlserver' 
  7.  
  8. --通过游标获取绝对行数 
  9. declare myCursor scroll  cursor for select * from  test 
  10. open myCursor 
  11. fetch  absolute  3  from  myCursor  
  12. close myCursor 
  13. deallocate myCursor 
  14.  
  15. --删除测试环境 
  16. drop table test 
  17. set nocount off 
  18. /*-- 
  19. id          name 
  20. ----------- ---------- 
  21. 999         sqlserver 
  22. --*/ 
  1. --好像还是需要指定排序列 
  2. declare @t table(id int ,name varchar(10)) 
  3. insert into @t select 999,'jinjazz'    
  4. insert into @t select 888,'csdn'  
  5. insert into @t select 999,'sqlserver' 
  6.  
  7. select top 1 * from  
  8. (select top 3 * from @t order by id desc)t 
  9. /* 
  10.  
  11. (所影响的行数为 1 行) 
  12.  
  13.  
  14. (所影响的行数为 1 行) 
  15.  
  16.  
  17. (所影响的行数为 1 行) 
  18.  
  19. id          name        
  20. ----------- ----------  
  21. 999         jinjazz 
  22.  
  23. (所影响的行数为 1 行) 
  24. */ 

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作