いやさあ、最近お仕事が忙しいというか、気が付きゃ復職して半年が過ぎて、かなり疲労が溜ってきてるのね。

家に帰ってまで仕事に没頭している訳ではないんだけど、家に帰るとどっと疲れが出て、帰ってまでパソコン触ろうという気になかなかなれなくてね。

前回のエントリから早1ヶ月。

さすがに、ちょっとは記事を書かないとね。

と、いうワケで、MySQLのDELETE文について書きます。

これまで、データベースからデータを削除する場合には、

DELETE FROM
  `table_name`
WHERE
  `id` = '{$id}'

てなカンジで、WHERE句にはそのテーブルに存在するカラムを直接指定していたが、今回の仕事では他の関連テーブルのカラムの値に基づいて削除する必要が生じた。

つまり、テーブルをJOIN句で繋がなければならないワケだが、ここで躓いた。

DELETE FROM
  `table_name1`
    INNER JOIN `table_name2`
    USING(`xxx`)
WHERE
  `id` = '{$id}'

なんとなく、上記のように単純にJOIN句をつけてみたが、ダメ。

途方に暮れる、、、ワケもなく、迷いなくgoogle先生に聞いてみた。

mysqlでdelete時のjoin
http://0-9.sakura.ne.jp/blog/archives/2008/07/10013846.html

DELETEとFROMのあいだのテーブル名は必須。

らしい。

つまり、

DELETE
  `table_name1`
FROM
  `table_name1`
    INNER JOIN `table_name2`
    USING(`xxx`)
WHERE
  `id` = '{$id}'

とすればいいワケか。

なるほど。

賢くなりました。

今日は、おしまい。