查詢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 A、B表陣列關聯查詢MySql陣列
- hive將查詢資料插入表中某欄位無資料Hive
- 資料庫全表查詢之-分頁查詢優化資料庫優化
- 英國人不能沒有的應用程式(附原資料表)
- 美國人不能沒有的應用程式(附原資料表)
- GBase 庫中查詢表的列資訊
- 查詢MySQL資料庫,MySQL表的大小MySql資料庫
- 【PHP資料結構】雜湊表查詢PHP資料結構
- efcore 跨表查詢,實現一個介面內查詢兩個不同資料庫裡各自的表資料資料庫
- 向已有的excel表中追加資料儲存(表頭一致)Excel
- elasticsearch之exists查詢Elasticsearch
- Oracle查詢Interval partition分割槽表內資料Oracle
- 根據查詢條件批量修改表資料
- mysql連表查詢出現資料重複MySql
- 資料庫學習筆記之查詢表資料庫筆記
- laravel + mysql 表資料在幾十萬,查詢使用平率非常高LaravelMySql
- 單表查詢
- 查詢表空間使用情況
- 表空間使用量查詢
- mysql三表聯合查詢(員工表,部門表,工資表)MySql
- 查詢mysql某張表中的所有資料(欄位)型別MySql型別
- 如何在Oracle資料庫中查詢表和欄位說明Oracle資料庫
- SQL Server 查詢資料庫中所有表資料條數SQLServer資料庫
- Mysql建表、索引、函式、查詢使用中的坑!!!MySql索引函式
- [多表查詢] 班級表,學生表。 學生表有 3 個 a_cid. b_cid, c_cid,如何兩表查?
- 千萬級資料庫使用索引查詢速度更慢的疑惑-資料回表問題資料庫索引
- mysql 5.7後使用sys資料庫下的表查詢資料庫效能狀況MySql資料庫
- Oracle OCP(22):查詢表資訊Oracle
- mysql查詢表基礎資訊MySql
- SQL server資料庫表碎片比例查詢語句SQLServer資料庫
- 查詢資料庫每個表佔用的大小資料庫
- mysql查詢表中日期最大的那條資料MySql
- mysql資料庫連表查詢的幾種方法MySql資料庫
- SQLSERVER查詢某個資料庫有幾張表SQLServer資料庫