Oracle基本操作六:子查询,rownum,rowid
来源:互联网 发布:好吃的白巧克力 知乎 编辑:程序博客网 时间:2024/05/01 18:29
--子查询:子查询(内部查询)在主查询前执行一次,结果被用于主查询(外部查询)
--子查询-例:查出比Allen工资高的人
select ename from emp where sal>(select sal from emp where ename='allen')
--子查询-单行子查询:只返回一行结果,关键词:> = <等。若返回多个结果,则报错。
--子查询-使用组函数:查工资比平均工资高
select ename from emp where sal>(select avg(sal) from emp)
--子查询-多行子查询:返加多个结果,需用:
in :符合所有结果,
any :与每个结果比较。如小于最大的,或大于最小的
all :与每个结果比较。如小于最小的,或大于最大的
--exists:判断子查询是true或false,若ture,则执行主查询
select * from b where where exists(select * from b where b.aid=1);
--exists解析:是采用loop的方式,循环地次数对exists影响很大。
--若外表数据量小(a)而内表(b)数据量非常大,查询会很快
--exists和in:若用in,则相反。内表(b)数据量小而外表(a)数据量大,则查询会很快
--rownum:伪列,数据表中不存在,只在结果集中存在,用于标记结果集的顺序递加)
--只有存在rownum=1的数据,才可能存在rownum=2的数据
select rownum,deptno,deptname from dept;
--rownum用途:分页
select empno,enme from (select rownum tempid,empno,ename from emp t) t where t.tempid between 5 and ;
--rowid:伪数列,对应于每一行数据,固定且唯一,存入数据时已经确定,是18位的二进制的字符
--可以用rowid来进行查询,速度快,
--只有表发生移动(表空间变化,导入,导出)rowid才会发生变化
select rowid,empno,ename,from emp where rowid='AAAR3qAAEAAAACHAAA';
--rowid用途一:查询数据,
--rowid用途二:删除重复数据:1.完全删除,2,删除重复的数据,但保留一条
--方法一:建临时表,distinct,再删原表,临时表数据再插入原表,效率高
--方法二:效率低
delete from tb_test where rowid in(select a.rowid as id) from tb_test a,tb_test b
where a.rowid>b.rowid and a.name=b.name and a.age=b.age;
--方法三:not in 效率最低 因为 not 不带索引
delete from tb_test a where rowid not in (select max(b.rowid) from tb_test b where
a.name=b.name and a.age=b.age;
--子查询-例:查出比Allen工资高的人
select ename from emp where sal>(select sal from emp where ename='allen')
--子查询-单行子查询:只返回一行结果,关键词:> = <等。若返回多个结果,则报错。
--子查询-使用组函数:查工资比平均工资高
select ename from emp where sal>(select avg(sal) from emp)
--子查询-多行子查询:返加多个结果,需用:
in :符合所有结果,
any :与每个结果比较。如小于最大的,或大于最小的
all :与每个结果比较。如小于最小的,或大于最大的
--exists:判断子查询是true或false,若ture,则执行主查询
select * from b where where exists(select * from b where b.aid=1);
--exists解析:是采用loop的方式,循环地次数对exists影响很大。
--若外表数据量小(a)而内表(b)数据量非常大,查询会很快
--exists和in:若用in,则相反。内表(b)数据量小而外表(a)数据量大,则查询会很快
--rownum:伪列,数据表中不存在,只在结果集中存在,用于标记结果集的顺序递加)
--只有存在rownum=1的数据,才可能存在rownum=2的数据
select rownum,deptno,deptname from dept;
--rownum用途:分页
select empno,enme from (select rownum tempid,empno,ename from emp t) t where t.tempid between 5 and ;
--rowid:伪数列,对应于每一行数据,固定且唯一,存入数据时已经确定,是18位的二进制的字符
--可以用rowid来进行查询,速度快,
--只有表发生移动(表空间变化,导入,导出)rowid才会发生变化
select rowid,empno,ename,from emp where rowid='AAAR3qAAEAAAACHAAA';
--rowid用途一:查询数据,
--rowid用途二:删除重复数据:1.完全删除,2,删除重复的数据,但保留一条
--方法一:建临时表,distinct,再删原表,临时表数据再插入原表,效率高
--方法二:效率低
delete from tb_test where rowid in(select a.rowid as id) from tb_test a,tb_test b
where a.rowid>b.rowid and a.name=b.name and a.age=b.age;
--方法三:not in 效率最低 因为 not 不带索引
delete from tb_test a where rowid not in (select max(b.rowid) from tb_test b where
a.name=b.name and a.age=b.age;
0 0
- Oracle基本操作六:子查询,rownum,rowid
- Oracle查询 rownum和rowid的区别
- Oracle查询rownum与rowid的不同之处
- rownum,rowid,row_number()及oracle分页查询.
- ORACLE ROWNUM ROWid
- oracle rownum rowid
- Oracle rowid和rownum
- Oracle中的rownum、rowid
- ORACLE ROWNUM ROWid
- Oracle rowNum & rowId
- oracle rownum rowid
- oracle 之 rownum rowid
- Oracle rownum和rowid
- Oracle中查询rownum和rowid的区别
- Oracle中查询rownum和rowid的区别
- Oracle中查询rownum和rowid的区别【转】
- Oracle中查询rownum和rowid的区别
- Oracle中查询rownum和rowid的区别
- [无异常,才正常] 加载属性文件内容报:Cannot load JDBC driver class ${jdbc.driverClassName}'
- iOS学习笔记--自定义通讯录
- logback日志详解
- 刘汝佳《算法竞赛入门经典(第二版)》习题(三)
- Trust Region Policy Optimization
- Oracle基本操作六:子查询,rownum,rowid
- Redis Sentinel——安装部署
- 大数据学习--问题集锦(hadoop篇)--集群搭建
- 一个面试题的思考
- linux之环境变量的配置
- 读论文Trust Region Policy Optimization
- 腾讯十天Vue.js课程之六:组件
- 基于WebSocket的Android与服务端通信
- iOS,Android网络抓包教程之tcpdump