查詢 (反連線)

2021-07-25 17:56:02 字數 1235 閱讀 7962

--去重 交集 不忽略空值

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

查詢反模式 隨機選擇

隨機數在資料庫中是經常用到的系統。在sql server中查詢隨機數最簡單的方法為 select top1 from person order bynewid 以上sql語句的執行計畫如下 以上這種方法,需要對整個表進行一次排序,而且還無法有效地使用索引。加入我們只需要前幾條資料,那麼好不容易對整個...

mysql連線查詢on MySQL連線查詢例項詳解

建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...

SQL查詢 內連線 外連線 自連線查詢

先建立2個表 學生表和教師表 在每個表中找出符合條件的共有記錄。x inner join y on.第一種寫法 只用where select t.teacher name,s.student name from teacher t,student s where t.id s.teacher id ...