【垃圾菜鸟笔记】后台分页的sql语句
2014-06-09 15:46
176 查看
前两天去一家面试,问到分页sql怎么写的,当时回答两层select 语句 用rownum伪列
然后 让写一下
当时项目经理笃定的告诉我,你这语句绝对执行不了,分页最少需要三层select
刚刚翻起之前写的分页语句
刚刚在网上查找了一下可能是沟通的问题吧,这个语句确实能分页,但是应该不够严谨
在找到这段语句的同时 原文作者 又列出了这个
这段会比上面更有效率一些
然后 让写一下
select * from (select rownum row,A.* from A) where row between ? and ? --这里 ? 我的想法是在java代码中传入起始条数与结束条数,起始条数就是当前页第一条在总的条数中第几条
当时项目经理笃定的告诉我,你这语句绝对执行不了,分页最少需要三层select
刚刚翻起之前写的分页语句
String sql = "SELECT * FROM (SELECT rownum roun,e.emp_id,e.emp_name,e.emp_email,e.emp_phone,e.emp_hiredate,j.job_name,e.emp_salary,d.dept_name " +"FROM emp e LEFT OUTER JOIN job j ON e.emp_job_id=j.job_id " +"LEFT OUTER JOIN dept d ON e.emp_dept_id=d.dept_id) " +"where roun between ? and ?";
刚刚在网上查找了一下可能是沟通的问题吧,这个语句确实能分页,但是应该不够严谨
SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A ) WHERE RN BETWEEN ? AND ?
在找到这段语句的同时 原文作者 又列出了这个
这段会比上面更有效率一些
<pre name="code" class="sql"><pre name="code" class="sql"><pre name="code" class="sql">SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A--但是还是有些想不通 为什么不在这里直接写表名 非要写一层循环呢,这样不是需要多执行一段代码吗
<span> </span>--如果需要先排序 再分页的话这样写倒是能想通 但是 不需要排序 直接分页觉得这样会有些... WHERE ROWNUM <= 40--控制最大值
) WHERE RN >= 21--控制最小值
相关文章推荐
- 菜鸟笔记:SQL语句(3)
- 菜鸟笔记:SQL语句(2)
- 菜鸟笔记:SQL语句(1)
- ASP构造大数据量的分页SQL语句。
- 常见数据库分页SQL语句
- PB学习笔记之SQL语句
- DataGrid连接Access的快速分页法(3)——SQL语句的选用(降序)
- 我的oracle笔记一(sql语句方面) 选择自 okcai 的 Blog
- ASP构造大数据量的分页SQL语句
- oracle分页sql语句(参考+原创)
- DataGrid连接Access的快速分页法(2)——SQL语句的选用(升序)
- 一个非常好的ORACLE的分页SQL语句
- 一条sql 语句搞定数据库分页
- DataGrid连接Access的快速分页法——动态生成SQL语句
- DataGrid连接Access的快速分页法(2)——SQL语句的选用(升序与降序)
- DataGrid连接Access的快速分页法(4)——动态生成SQL语句
- Web开发中一种用sql语句完成分页的高效率方法,以jsp/asp为例
- 使用SQL语句来进行分页处理
- 数据库菜鸟不可不看 简单SQL语句小结
- 海量数据实现分页的sql语句