Oracle 中使用带有 Order By 的分页处理办法

[color=blue]1. Oracle 分页中对于分页的处理,以下是没有 Order by 的正确分页Sql语句。 [/color]
select * from
(
SELECT rownum rownumber,a.id,a.userid,a.country,a.realname,a.firstname,a.lastname,a.educationbgcode,
a.updatetime,round((sysdate-a.experienceyear)/360) as textint1,a.gender,a.birthday,a.educationbg,
a.province,a.other,positiontype,positionsubtype
FROM resume a
where lang = '1' AND a.isdeleted = '0' AND a.educationbgcode>=4
rownumber<=20
)
where and rownum>10


[color=blue]2. Oracle 中分页语句中,有 order by 并且错误的查询将语句。[/color]
select * from
(
SELECT rownum rownumber,a.id,a.userid,a.country,a.realname,a.firstname,a.lastname,a.educationbgcode,
a.updatetime,round((sysdate-a.experienceyear)/360) as textint1,a.gender,a.birthday,a.educationbg,
a.province,a.other,positiontype,positionsubtype
FROM resume a
where lang = '1' AND a.isdeleted = '0' AND a.educationbgcode>=4
[color=red]order by updatetime desc [/color]
rownumber<=20
)
where and rownum>10


[color=blue]3. 解决办法,将采用3次子查询来解决带有 Order by 的分页查询。[/color]SELECT x.* from
(
SELECT [color=red]rownum numbers[/color],z.* from
(
SELECT [color=red]rownum rownumber[/color],a.id,a.userid,a.country,a.realname,a.firstname,a.lastname,a.educationbgcode,
a.updatetime,round((sysdate-a.experienceyear)/360) as textint1,a.gender,a.birthday,a.educationbg,
a.province,a.other,positiontype,positionsubtype
FROM resume a
where lang = '1' AND a.isdeleted = '0' AND a.educationbgcode>=4
order by updatetime
) z
where [color=red]rownum[/color]<=10
) x
where [color=red]x.numbers[/color]>5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值