【MySQL】共通のIDのデータを複数テーブルからDELETEする

MySQL

メインとしているマスタテーブルからDELETEを行った際に、
関連する他の複数のテーブルからも同時に共通のレコードの削除を行いたい時ってたまにあると思います。
そんな時にテーブル毎にSQLを実行せずとも一発でも掛けます。

実行環境
サーバの種類: MySQL
サーバのバージョン: 5.6.20

共通IDサンプルテーブル

UserIdName
1山田
2田中
3佐藤
AutoIdTypeUserIdDate
1出勤12020/1/8 9:16:10
2出勤22020/1/8 10:20:11
3早退12020/1/8 15:16:06
4退勤22020/1/8 18:00:56
5出勤32020/1/9 9:00:51

左: M_UserData … 社員IDと名前を持つ  
右: T_TimeCard … 社員の出退勤のレコードを持つ

こんな感じのテーブルが有ったとして、この度山田さんが退職したとします。

テーブル個数分のDELETE

通常通りテーブル毎に消していく場合は、

当然これだけでOK。でも、もう少し複雑なテーブルだったりするとSQL作成して実行して~が結構面倒だし冗長になりがち。

一度のSQLでDELETE

そんな時はこうする↓

すると両方のテーブルから山田さんレコードは抹消されます。
一つ注意としてDELETE~FROMの間のテーブル指定はテーブル名のM_UserDataやT_TimeCardとしてしまうと、
“Unknown table ‘M_UserData’ in MULTI DELETE”
とエラーが吐かれちゃう。

必ずエイリアスで記述しないとダメなのでお気を付けください(ᵔᴥᵔ)

コメント