-
a not in(10,20,null)相当于a!=10 and a!=20 and a!=null,然而a!=null永远为假, 所以要排除空值,判断是否是null值,只能用is or is not而不能用= 或者!=。 select * from emp where empno not in (select mgr from emp where mgr is not null);查看全部
-
1.自连接存在的问题:不适合操作大表 解决办法:层次查询 层次查询某些情况下,可以替代自连接 本质上,是一个单表查询 比如: select empno,ename,sal,mgr from emp connect by prior empno=mgr start with empno=7839; 翻译过来就是connect by上一层的员工号=老板号 start with empno=根的号 因为根节点并没有老板,那么我们可以把start with这一句这样表示 start with mgr is null;就表示他的老板是空值. 2.层次查询中提供一个伪列:level,来表示树的深度,我们要想查树的伪列,必须在select中显式的写出来,就像这样: select level,empno,ename,sal,mgr from emp connect by prior empno=mgr start with mgr=null order by 1; 3.自连接的优缺点:结果直观,但不适合操作大表 层次查询的优缺点:是一个单表查询,不会产生笛卡尔集,但是他得到的结果并没有自连接那么直观 需要根据实际问题来选择用自连接还是层次查询。查看全部
-
按部门员工,按照如下格式输出 子查询解决查看全部
-
按部门员工,按照如下格式输出 函数解决查看全部
-
explain plan for 查看查询语句耗费的cpu资源 相关子查询效率更高查看全部
-
找到员工表中大于本部分平均薪水的员工 select e.empno,e.ename,e.sal,d.avgsal from emp e,select deptno,avg(sal) avgsal from emp group by deptno) d where e.deptno=d.deptno and e.sal>d.avgsal;查看全部
-
查询不是老板的员工 select * from emp where empno not in (select mgr from emp where mgr is not null);查看全部
-
子查询的null值问题查看全部
-
any和min 多行转单行 all和max查看全部
-
any操作符:sal >any(子查询)查看全部
-
多行子查询,in操作符 多表查询细节and or 注意顺序查看全部
-
非法单行子查询查看全部
-
单行子查询实例查看全部
-
多行操作符查看全部
-
单行子查询:单行操作符; 多行子查询:多行操作符查看全部
举报
0/150
提交
取消