Oracle分页查询的SQL模板

Oracle的分页查询不同于MySQL的`limit`,而是利用`rownum`进行。本文提供了一个分页查询模板,适用于简单及复杂场景,帮助优化查询效率。
摘要由CSDN通过智能技术生成

Oracle分页查询的SQL模板 

select * from 【Table:表名】 order by 【筛选条件】
limit 【查询起点】,【需要的行数】;

与MySQL的分页查询("limit")不同,oracle的分页查询是用到了"rownum"。 

rownum是一种伪列,它会根据返回记录生成一个序列化的数字。利用rownum,我们可以生产一些原先难以实现的结果输出。 

在oracle中,早已有实现分页查询的模板,只要把相关的参数替换即可。


SELECT * FROM
(
   SELECT A.*, ROWNUM RN
   FROM (【替换内容:SQL语句】) A
   WHERE ROWNUM <= 【替换内容:起始索引 + 每页显示的数量】
)
WHERE RN >= 【替换内容:起始索引】

替换内容中的“SQL语句”直接写入正常的select语句即可。


假设现有一张客户表CUSTOMER

例如我想要在分页查询(每页显示10行客户信息)查询第4页的客户情况,以下内容应替换为:

【替换内容:SQL语句】:    SELECT * FROM CUSTOMER

【替换内容:起始索引】:    30

【替换内容:起始索引 + 每页显示的数量】:    40


SQL语句如下:

<pre name="code" class="sql">SELECT * FROM
(
   SELECT A.*, ROWNUM RN
   FROM (SELECT * FROM CUSTOMER) A
   WHERE ROWNUM <= 40
)
WHERE RN >= 30

 

当然,这只是一个简单的模板。如果遇到了更加复杂的情况,或者追求更好的效率,还是要多多学习好SQL语句的。才能写出更好的SQL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值