查詢a表中b表沒有的資料,使用not exists
查詢a表中b表沒有的資料,使用not exists
1.假設有兩個表,dept(id,dname)表,emp(id,did,salary)表
dept表
id | dname |
---|---|
1 | 採購部 |
2 | 財務部 |
3 | 業務部 |
emp表
id | did | salary |
---|---|---|
1 | 1 | 5000 |
2 | 1 | 5500 |
3 | 2 | 5500 |
4 | 2 | 4500 |
5 | 2 | 5000 |
查詢在dept表中有的id在emp表中沒有對應的did的dept表資訊,大概意思就是查詢部門人數為0的情況,最後顯示的結果如下:
id | dname |
---|---|
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用法的區別。
歡迎大家指出我的錯誤,歡迎大家一起討論技術。
相關文章
- MySQL查詢資料庫中沒有主鍵的表MySql資料庫
- 查詢使用者中哪些表沒主鍵
- 資料庫中單表查詢資料庫
- sqlserver新增查詢 表、欄位註釋,組合查詢所有的使用者、表名、表註釋SQLServer
- SQL Server 查詢資料庫中所有的表名及行數SQLServer資料庫
- 查詢資料庫中的所有的普通使用者資料庫
- 查詢Oracle資料庫使用者表中的多少資料量Oracle資料庫
- 資料庫基礎查詢--單表查詢資料庫
- mysql 資料庫或者表空間使用查詢MySql資料庫
- oracle查詢沒有主鍵的表Oracle
- 【資料庫】sql連表查詢資料庫SQL
- 查詢資料庫表是否存在資料庫
- /*列轉行查詢表資料*/
- MYSQL A、B表陣列關聯查詢MySql陣列
- oracle 查詢及刪除表中重複資料Oracle
- mysql 查詢及 刪除表中重複資料MySql
- 美國人不能沒有的應用程式(附原資料表)
- 英國人不能沒有的應用程式(附原資料表)
- B樹查詢,磁碟查詢資料
- hive將查詢資料插入表中某欄位無資料Hive
- mysql查詢表的資料體積MySql
- 優化mysql資料字典表查詢優化MySql
- Oracle授權A使用者查詢B使用者的所有表Oracle
- Oracle中對兩個資料表交集的查詢(轉)Oracle
- 資料庫全表查詢之-分頁查詢優化資料庫優化
- 使用表連線替代exists
- 向已有的excel表中追加資料儲存(表頭一致)Excel
- 【PHP資料結構】雜湊表查詢PHP資料結構
- 查詢MySQL資料庫,MySQL表的大小MySql資料庫
- 查詢指定的表在那些資料庫中存在(轉)資料庫
- efcore 跨表查詢,實現一個介面內查詢兩個不同資料庫裡各自的表資料資料庫
- 子查詢-表子查詢
- 水煮orale22——查詢表空間使用資訊以及表空間中的每個資料檔案資訊
- 查詢表中的連結行
- 查詢mysql某張表中的所有資料(欄位)型別MySql型別
- exp匯出一個表中符合查詢條件的資料
- 如何在Oracle資料庫中查詢表和欄位說明Oracle資料庫
- 查詢出資料庫中預設會以全表掃描方式訪問的表資料庫