mysql、oracle分页查询数据库
来源:互联网 发布:博拉网络ipo最新消息 编辑:程序博客网 时间:2024/04/26 23:44
一、mysql分页查询
select * from tableName where id limit (当前页码-1)*页面容量 , 页面容量
第一个参数:数据偏移量,当前页码从1开始。
第二个参数:每页的数据量。
二、oracle分页查询
SELECT * FROM (SELECT t2.*, ROWNUM AS rowno FROM (SELECT * FROM emp t1 WHERE id > 10 ORDER BY id DESC) t2 WHERE ROWNUM <= 20) t3 WHERE t3.rowno >= 10;
这里是三层嵌套写法:select A(select B(select C))。这种写法在实际中比较实用,我们将外层的两层嵌套改写成固定的分页头和分页尾,而中间的部分则为正真的业务SQL,与分页处理进行分离,这样多个表都可以公用这段分页头和尾。
分页头:SELECT * FROM (SELECT t2.*, ROWNUM AS rowno FROM (分页尾:) t2 WHERE ROWNUM <= 页尾) t3 WHERE t3.rowno >= 页头;
还有一种两层的写法,这种写法比上面的效率要高一点,因为他少查询了一遍,但是两层写法不便于将分页代码分离出来,不利于维护。在数据量不是特别庞大的时候还是建议用三层写法,只有数据量特别大时才会有比较明显的效率区别。两层写法如下所示:
SELECT * FROM (SELECT ROWNUM AS rowno, t1.* FROM emp t1 WHERE id > 10 AND ROWNUM <= 20 ORDER BY id DESC) t2 WHERE t2.rowno >= 10;
另外补充一点关于ROWNUM 的知识,ROWNUM只能用以上符号(<、<=、!=),(>,>=,=,between..and)经常会查询不到结果或者结果莫名其妙。可以这样理解:ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。如果你用>,>=,=,between…and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除,接着取下条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。
1 0
- mysql、oracle分页查询数据库
- Mysql和Oracle数据库中的分页查询
- oracle与mysql 数据库sql 分页查询
- Oracle\MySQL数据库分页查询实例
- Oracle、Mysql数据库分页查询归纳
- Oracle数据库分页查询
- oracle数据库分页查询
- oracle数据库分页查询
- oracle分页数据库查询
- mysql & oracle 分页查询
- oracle mysql 分页查询
- mysql、oracle 分页查询
- mysql数据库分页查询
- MySQL 数据库 分页查询
- mysql 数据库分页查询
- MySQL、SqlServer、Oracle三大主流数据库分页查询
- MySQL、SqlServer、Oracle三大主流数据库分页查询
- MySQL、SqlServer、Oracle三大主流数据库分页查询
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项的原因及解决方案
- ant 构建的依赖项目 kettle项目 源码导入eclipse
- BZOJ 2956 模积和 分块
- 64位Ubuntu上编译32位程序
- Android动画----Set
- mysql、oracle分页查询数据库
- IOS面试经常被问到的问题
- 学习线性表的顺序表
- 创建用户名
- 10万个草泥马,webView就因为这一句话掉不起来输入法的问题害我熬到半夜
- JavaScript细节知识
- zeromq helloworld的Python、Rust实现
- 写框架思路进程(三)
- 逆序输出数组