查詢a表中b表沒有的資料,使用not exists

狂龍丶龍王發表於2020-10-22

查詢a表中b表沒有的資料,使用not exists

1.假設有兩個表,dept(id,dname)表,emp(id,did,salary)表

dept表

iddname
1採購部
2財務部
3業務部

emp表

iddidsalary
115000
215500
325500
424500
525000

查詢在dept表中有的id在emp表中沒有對應的did的dept表資訊,大概意思就是查詢部門人數為0的情況,最後顯示的結果如下:

iddname
3業務部

程式碼如下:

select id,dname
from dept d
where not exists(
	select did
	from emp
	where d.id=did
)

其實碰到這種情況很多人都會選擇用not in,先查詢所有的emp表的did,去重,然後用dept的id去not in一下結果,上程式碼。

select id,dname
from dept d
where id not in(
	select distinct did
	from emp
)

這樣也是可以的,但是還是推薦使用not exists,具體原因自己百度查詢,sql的優化,看看not exists和not in用法的區別。

歡迎大家指出我的錯誤,歡迎大家一起討論技術。

相關文章