片方のテーブルに存在したデータのみDELETEするSQLサンプルです。
このような場合は、EXISTS句を使うと簡単です。
サンプル
例として、TBL_B.CDと同じCDのデータをTBL_Aから削除します。
| cd | name | price |
|---|---|---|
| 001 | りんご | 150 |
| 002 | ぶどう | 500 |
| 003 | みかん | 50 |
| 004 | もも | 400 |
| 005 | かき | 200 |
| cd | name |
|---|---|
| 002 | 取り扱い中止 |
| 004 | 取り扱い中止 |
| 006 | 取り扱い中止 |
例)tbl_b.cdに存在するデータをtbl_aから削除する
|
1 2 3 4 |
DELETE tbl_a WHERE EXISTS( SELECT 'X' FROM tbl_b WHERE tbl_a.cd = tbl_b.cd ); |
(結果)
| cd | name | price |
|---|---|---|
| 001 | りんご | 150 |
| 003 | みかん | 50 |
| 005 | かき | 200 |
解説
- 002、004はtbl_bに存在するため削除されます。
- 006はtbl_aに存在しないため影響しません。