SQLでは、`JOIN`を用いて複数のテーブルを結合することができますが、それだけではありません。`JOIN`と組み合わせて、特定の条件に基づいてデータを削除することも可能です。この記事では、その手法について詳しく解説していきます。
目次
なぜJOINを使って削除するのか
通常、SQLでデータを削除する場合、単一のテーブルに対して`DELETE`命令を発行します。しかし、複数のテーブルが関連している場合、単一のテーブルからデータを削除するだけでは不十分な場合があります。そのような場合に、`JOIN`を使って他のテーブルと結合した結果に基づいてデータを削除する方法が役立ちます。
基本的な削除のSQL文
最初に、単一のテーブルからデータを削除する基本的なSQL文について確認しておきましょう。
DELETE FROM テーブル名 WHERE 条件;
この基本形を理解した上で、`JOIN`を使ってデータを削除する方法に進みます。
JOINを用いたデータ削除の手法
`JOIN`を用いてデータを削除する際の一般的な構文は以下の通りです。
DELETE t1, t2 FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id
WHERE 条件;
例:従業員と部署テーブル
以下に、`employees`テーブルと`departments`テーブルがあると仮定します。
従業員ID | 名前 | 部署ID |
---|---|---|
1 | 田中 | 101 |
2 | 佐藤 | 102 |
3 | 鈴木 | 103 |
部署ID | 部署名 |
---|---|
101 | 営業部 |
102 | 技術部 |
103 | 人事部 |
営業部(部署ID=101)が解散したと仮定して、その部署に所属する従業員のデータを削除するSQL文を作成する例を考えます。
DELETE employees, departments FROM employees
JOIN departments ON employees.部署ID = departments.部署ID
WHERE departments.部署ID = 101;
まとめ
`JOIN`を用いて他のテーブルと結合した結果に基づいてデータを削除する手法は非常に便利です。複数のテーブルが関連する複雑な状況で、効率よくデータを管理したい場合にはこの方法が有効です。
コメント