找回密码
 立即注册
搜索
查看: 273|回复: 7

Oracle中分页查找语句的实现

[复制链接]

403

主题

3329

回帖

5022

积分

网站编辑

积分
5022
发表于 2004-7-16 10:00:51 | 显示全部楼层 |阅读模式
我们经常要访问数据集的某一个中间部分,例如第10到第20条记录,Oracle中有一个很好语句来实现,那就是with。以下是使用的例子:

with partdata as (select rownum rowno,t.* from  table1 t where t.id> 200407160000)
select * from partdata where rowno between 10 and 20

当然还有别的方法,但我目前测试这种方法的速度最快。

24

主题

1285

回帖

1756

积分

金牌会员

我是保安

积分
1756
发表于 2004-7-16 12:26:32 | 显示全部楼层
t.id〉什么呀?看不懂。
回复

使用道具 举报

403

主题

3329

回帖

5022

积分

网站编辑

积分
5022
 楼主| 发表于 2004-7-16 21:13:21 | 显示全部楼层
with partdata as (select rownum rowno,t.* from table1 t where t.id > 200407160000)
select * from partdata where rowno between 10 and 20
回复

使用道具 举报

403

主题

3329

回帖

5022

积分

网站编辑

积分
5022
 楼主| 发表于 2004-7-16 21:14:08 | 显示全部楼层
以上虽然换行但却是一个语句。注意
回复

使用道具 举报

13

主题

639

回帖

769

积分

高级会员

积分
769
发表于 2004-7-19 10:18:13 | 显示全部楼层
最初由 xuedaoo 发布
[B]t.id〉什么呀?看不懂。 [/B]

t就是表table1的别名啊,id是其中的一个字段,> 200407160000不就是条件了吗,呵呵~~
回复

使用道具 举报

13

主题

639

回帖

769

积分

高级会员

积分
769
发表于 2004-7-19 10:19:13 | 显示全部楼层
最初由 xujh 发布
[B]with partdata as (select rownum rowno,t.* from table1 t where t.id > 200407160000)
select * from partdata where rowno between 10 and 20 [/B]


rowno没有看到过,只知道rownum
回复

使用道具 举报

24

主题

1285

回帖

1756

积分

金牌会员

我是保安

积分
1756
发表于 2004-7-19 11:46:26 | 显示全部楼层
rowno 是 rownum的别名。
不过就我感觉,这个方法恐怕有问题。
回复

使用道具 举报

13

主题

639

回帖

769

积分

高级会员

积分
769
发表于 2004-7-19 20:15:13 | 显示全部楼层
偶也不太用between and,偶只用minus的,不过这样就不能order by了,哪个更好些呢??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-20 15:55 , Processed in 0.083519 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表