2016-06-21 26 views
1

我得到了一個「大」數據庫(10M行),而且我需要刪除無用的獲取ID(它不再具有acquisition_id關係)。Mysql - 檢查id是否存在於外部表中

收購

- id 
- date 

datapres

- id 
- value 
- atmo 
- #acquisition_id 

datatemps

- id 
- #acquisition_id 

個dataconds

- id 
- value 
- stack_num 
- #acquisition_id 

所以我需要選擇那些3個表中的所有ID來獲取withtout關係。是否可以直接在SQL中使用?

回答

1

是的,你可以使用多個LEFT JOIN S:

SELECT a.id 
FROM acquisitions a 
LEFT JOIN datapres dp 
ON(a.id = dp.acquisition_id) 
LEFT JOIN datatemps dt 
ON(a.id = dt.acquisition_id) 
LEFT JOIN dataconds dc 
ON(a.id = dc.acquisition_id) 
WHERE dp.id IS NULL OR 
     dt.id IS NULL OR 
     dc.id IS NULL 

這將帶給您ID S中的缺失從3個數據表中的一個。

+0

我測試了第一次選擇的acquisitions.id,但它並沒有丟失,發現在datapres.acquisition_id – kesm0

+0

你想要它返回,如果它從** all **表丟失或只是**一** **? @ kesm0,現在只要一個就足夠了,如果你想要所有的話,那麼用'AND'來代替'OR' – sagi

+0

是的,我需要所有的桌子,完美的工作!謝謝 – kesm0