免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3194 | 回复: 5

select结果集中如何返回指定行的结果! [复制链接]

论坛徽章:
0
发表于 2006-08-04 16:34 |显示全部楼层
遇到一个小问题请各位指点一下

我想在一个select返回的结果集中,一次取出指定条数的数据(其中已经不方便在用where条件来限定了,)
还是举个例子更清楚点
  1. select * from user where tdate='20060804'
复制代码

得到结果可能有100行,我想一次取出其中的10行来进行处理,也就是第一次取出1~10的,第二次取出11~20的……

我用rownum实现了一下,但是好像在8i上有bug,在9i上没有问题,不知道原因了
我是这么实现的:

  1. select rownum,field1,field2,… from user
  2. where tdate='20060804' and rownum<=$num+10
  3. minus  select rownum,field1,field2,… from user
  4. where rownum<$num
复制代码


现在在9i上是没有什么问题,但是在8i上就是$num不能大于31,即使设置$num大于了31,可显示的时候还是从31开始显示,也就是不管$num设置多大,但是都还是从31开始取得数据。这是什么原因呢??

我还试验了一下想利用结果集来取得,但是没有成功

  1. select *
  2. from (
  3. select rownum,field1,field2,…  from user
  4. where  tdate='20060804'
  5. )
  6. where rownum>10 and rownum<=20
复制代码

这样没能成功

不知道各位还有没有什么好办法,请指教一下,先谢过了!

论坛徽章:
0
发表于 2006-08-04 17:33 |显示全部楼层
用结果集查:
select * from(
select rownum as row1,...from tablename
)
where row1>10 and row1<=20

就可以

论坛徽章:
0
发表于 2006-08-04 18:03 |显示全部楼层
我认为用结果集也可以来实现的,可我试了几次都没成功;
郁闷了……

论坛徽章:
0
发表于 2006-08-05 15:05 |显示全部楼层
张知识

论坛徽章:
0
发表于 2006-08-06 12:03 |显示全部楼层
原帖由 xieyizhi 于 2006-8-4 17:33 发表
用结果集查:
select * from(
select rownum as row1,...from tablename
)
where row1>10 and row1<=20

就可以

这样应该可以。

论坛徽章:
0
发表于 2006-08-07 07:40 |显示全部楼层
有位朋友指点了一下应该是这样的

  1. select *
  2. from (
  3. select rownum R,field1,field2,… from user
  4. where tdate='20060804'
  5. order by something
  6. )
  7. where R>10 and R<=20
复制代码

需要给rownum定义个别名……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP