2016-06-21 26 views
1

"大きな"データベース(10M行)があり、無駄な取得IDを削除する必要があります。Mysql - 外部テーブルにIDが存在するか確認してください

取得

- id 
- date 

datapres

- id 
- value 
- atmo 
- #acquisition_id 

datatemps

- id 
- #acquisition_id 

dataconds

- id 
- value 
- stack_num 
- #acquisition_id 

だから私は、これらの3つのテーブル内の関係withtout ALL取得IDを選択する必要があります。それは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 

これはあなたに3つのデータテーブルの1から欠落しているID Sをもたらすでしょう。

+0

私は最初に選択したacquisitions.idをテストしましたが、欠落していないことをdatapres.acquisition_idで確認しました – kesm0

+0

**すべての**テーブルから欠落している場合、 @ kesm0、今のところ1つだけで十分です。すべてが必要な場合は、「OR」を「AND」に置き換えてください。 – sagi

+0

はい、すべてのテーブルが必要でした。ありがとうございました – kesm0

関連する問題