-
a not in(10,20,null)相當(dāng)于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.自連接存在的問題:不適合操作大表 解決辦法:層次查詢 層次查詢某些情況下,可以替代自連接 本質(zhì)上,是一個單表查詢 比如: select empno,ename,sal,mgr from emp connect by prior empno=mgr start with empno=7839; 翻譯過來就是connect by上一層的員工號=老板號 start with empno=根的號 因為根節(jié)點并沒有老板,那么我們可以把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.自連接的優(yōu)缺點:結(jié)果直觀,但不適合操作大表 層次查詢的優(yōu)缺點:是一個單表查詢,不會產(chǎn)生笛卡爾集,但是他得到的結(jié)果并沒有自連接那么直觀 需要根據(jù)實際問題來選擇用自連接還是層次查詢。查看全部
-
按部門員工,按照如下格式輸出 子查詢解決查看全部
-
按部門員工,按照如下格式輸出 函數(shù)解決查看全部
-
explain plan for 查看查詢語句耗費的cpu資源 相關(guān)子查詢效率更高查看全部
-
找到員工表中大于本部分平均薪水的員工 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 多行轉(zhuǎn)單行 all和max查看全部
-
any操作符:sal >any(子查詢)查看全部
-
多行子查詢,in操作符 多表查詢細節(jié)and or 注意順序查看全部
-
非法單行子查詢查看全部
-
單行子查詢實例查看全部
-
多行操作符查看全部
-
單行子查詢:單行操作符; 多行子查詢:多行操作符查看全部
舉報
0/150
提交
取消