查詢 (反連接)


--去重 交集 不忽略空值
select deptno from emp 
intersect
select deptno from dept2


---dept2 不在 emp表中的數據
select deptno from dept2 
minus
select deptno from emp 


select deptno from emp  
minus
select deptno from  dept2


因爲有空值 所以not in 返回0條記錄


改寫爲 相關子查詢




select *
  from dept2 d
  left join emp e
    on d.deptno = e.deptno
 where e.deptno is null














create table t_sal_jj
(empno number,
jj number)


select * from emp 
--報錯
select e.ename,e.deptno
  from dept2 d,emp e
    where  d.deptno = e.deptno
left join t_sal_jj jj
on e.empno=jj.empno


--全部改寫爲 顯示連接 的 
select e.ename,e.deptno,jj
  from dept2 d join emp e
    on   d.deptno = e.deptno
left join t_sal_jj jj
on e.empno=jj.empno


--或者改寫成oracle獨有的外部連接語法
select e.ename,e.deptno,jj
  from dept2 d , emp e,t_sal_jj jj
    where   d.deptno = e.deptno
and e.empno=jj.empno(+)
-----還可以使用標量子查詢


select e.ename,e.deptno,(select jj from t_sal_jj jj where jj.empno=e.empno)as jj
  from dept2 d,emp e
    where  d.deptno = e.deptno


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章