oracle通用分页查询,使用Oracle和sql server以及通用分页方法进行分页

正如其他人所建议的那样,您可以在Oracle中使用rownum.这有点棘手,你必须将查询嵌套两次.

例如,要对查询进行分页

select first_name from some_table order by first_name

你需要像这样嵌套它

select first_name from

(select rownum as rn,first_name from

(select first_name from some_table order by first_name)

) where rn > 100 and rn <= 200

原因是rownum是在where子句之后和order by子句之前确定的.要查看我的意思,您可以查询

select rownum,first_name from some_table order by first_name

你可能会得到

4 Diane

2 Norm

3 Sam

1 Woody

这是因为oracle评估了where子句(在本例中为none),然后分配rownums,然后按first_name对结果进行排序.您必须嵌套查询,以便它使用在排序行后分配的rownum.

第二个嵌套与如何在where条件下处理rownum有关.基本上,如果您查询“rownum> 100”,那么您将得不到任何结果.这是一个鸡肉和鸡蛋的东西,它不能返回任何行,直到它找到rownum> 100,但因为它没有返回任何行,所以它永远不会增加rownum,因此它永远不会计为100.呃.第二级嵌套解决了这个问题.请注意,此时必须为rownum列添加别名.

最后,您的order by子句必须使查询具有确定性.例如,如果您有John Doe和John Smith,并且您只按名字排序,则两者可以从一次执行查询到下一次执行.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值