
Oracle 子查询和分页查询
发布日期:2021-05-07 19:44:23
浏览次数:13
分类:技术文章
本文共 1416 字,大约阅读时间需要 4 分钟。
文章目录
一、子查询
子查询:在一个查询的内部还包括另一个查询,则此查询称为子查询,Sql的任何位置都可以加入子查询
- 范例:查询比 7654 工资高的雇员 分析:查询出 7654 员工的工资是多少,把它作为条件
子查询在操作中有三类:
单列子查询:返回的结果是一列的一个内容
单行子查询:返回多个列,有可能是一个完整的记录 多行子查询:返回多条记录
- 范例:查询出比雇员 7654 的工资高,同时从事和 7788 的工作一样的员工
- 范例:要求查询每个部门的最低工资和最低工资的雇员和部门名称
---子查询返回一个值---查询出工资和SCOTT一样的员工信息select * from emp where sal in(select sal from emp where ename = 'SCOTT')---子查询返回一个集合---查询出工资和10号部门任意员工一样的员工信息select * from emp where sal in(select sal from emp where deptno = 10);---子查询返回一张表---查询出每个部门最低工资,和最低工资员工姓名,和该员工所在部门名称---1,先查询出每个部门最低工资select deptno, min(sal) msalfrom emp group by deptno;---2,三表联查,得到最终结果。select t.deptno, t.msal, e.ename, d.dnamefrom (select deptno, min(sal) msal from emp group by deptno) t, emp e, dept dwhere t.deptno = e.deptnoand t.msal = e.saland e.deptno = d.deptno;
二、Rownum 和分页查询
ROWNUM 表示行号,实际上此是一个列,但是这个列是一个伪列,此列可以在每张表中出现。
rownum 行号:当我们做select操作的时候,每查询出一行记录,就会在该行上加上一个行号。行号从 1 开始,依次递增,不能跳着走。
----排序操作会影响 rownum 的顺序select rownum, e.* from emp e order by e.sal desc----如果涉及到排序,但是还要使用rownum的话,我们可以再次嵌套查询。select rownum, t.* from(select rownum, e.* from emp e order by e.sal desc) t;
- 范例:查询 emp 表带有 rownum 列
我们可以根据 rownum 来取结果集的前几行,比如前 5 行
但是我们不能取到中间几行,因为rownum不支持大于号,只支持小于号,如果想实现我们的 需求怎么办呢?答案是使用子查询,也正是oracle分页的做法。
第一种写法:select *from (select rownum rm, a.* from (select * from emp) a where rownum < 11) b where b.rm > 5第二种写法:select *from (select rownum r ,emp.* from emp) bwhere b.r >5 and b.r <11
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月22日 07时49分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
七 socket编程
2019-03-04
Vue实现选项卡功能
2019-03-04
清除默认样式
2019-03-04
Android Dialog 普通对话框 单选对话框 多选对话框
2019-03-04
Android 联合ViewPager 与 Fragment
2019-03-04
2.4 大电路静态工作点的稳定
2019-03-04
汉诺塔 C++实现【STL stack】
2019-03-04
数据结构——链表
2019-03-04
[数据结构与算法]链表逆置与遍历
2019-03-04
CommonJs
2019-03-04
Unicode编码和Base64编码
2019-03-04
html基础
2019-03-04
ICMP网际控制报文协议
2019-03-04
[编程题]Course List for Student (25)
2019-03-04
Python【面向对象】1
2019-03-04
【Python】面向对象,封装
2019-03-04
接口又是个啥?
2019-03-04
JS中如何创建对象
2019-03-04
二叉树的基础练习题代码
2019-03-04