Mysql与Oracle分页查询差异

Mysql分页查询有limit关键词,分页查询十分方便

 

例如:--查询领用数量排倒数第5的领用信息

SELECT * from APPLY a order by a.QUANTITY  LIMIT 4,1;

--limit两个参数

从第几个开始查,查几个(注意下标从0开始)

查询前3行数据:

select * from emp limit 3;

查询第3到第5行的数据:

select * from emp limit 2,3

查询第5行之后的所有数据(包括第5行):

select * from emp LIMIT 4,14

Oracle分页查询因为没有limit关键字,但是有rownum,rownum其实就是一个隐藏列,记录行号

SELECT * from(
select  * from APPLY a order by a.QUANTITY  ) 
where rownum<=5 MINUS  (SELECT * from(
select  *  from APPLY a order by a.QUANTITY  ) 
where rownum<=4)

因为rownum只是一个隐藏列,它不会跟order by排序之后再去自增长,只能用minus去减去

看一个不用order by排序的例子

--查询产品信息表中的第5到第9行信息。

写法1:
SELECT * FROM PRODUCT  where ROWNUM <=9 MINUS SELECT * FROM PRODUCT  where ROWNUM <5;

写法2:

SELECT  * from
(
SELECT  p.*,rownum rn FROM PRODUCT p 
)where rn BETWEEN 5 and 9;

正常表数据顺序 

 按价格排序后:SELECT  p.*,rownum rn FROM PRODUCT p order by p.price

 想要去查询价格最低的5-9条数据

SELECT  * from
(
SELECT  p.*,rownum rn FROM PRODUCT p order by p.price
)where rn BETWEEN 5 and 9;            --错误!!

 正确写法:

SELECT  * from(
SELECT * FROM PRODUCT p order by PRICE) where rownum<=9 MINUS SELECT * from(
SELECT * FROM PRODUCT p order by PRICE) where rownum<=4;

思考:select * from apply where rownum > 5  正确吗?

SELECT * from(
select a.*,rownum as rn from APPLY a )
where rn>5 ;

rownum的用法 - 走看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JagTom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值