MySQLでDELETE文を使うときにJOIN(外部結合)を使って条件を指定したいときなどに役に立つ書き方です。
商品を管理するこんなテーブル「goodsテーブル」と
![goodsテーブル](https://tech.omablo.com/wp-content/uploads/sites/5/2021/09/image-4.png)
商品のサイズを管理するこんなテーブル「goods_sizeテーブル」があります。
![goods_sizeテーブル](https://tech.omablo.com/wp-content/uploads/sites/5/2021/09/image-1.png)
この2テーブルで説明していきます。
JOINしたテーブルを条件に使う
この2テーブルで、 goods_sizeテーブル に無い商品は goodsテーブル から削除(DELETE)したい場合はこんな風に書くことができます。
DELETE G FROM
goods AS G
LEFT JOIN
goods_size AS GS
ON GS.goods_id = G.goods_id
WHERE
GS.goods_id IS NULL
ポイントはテーブルに別名を指定することです。
これでgoods_sizeテーブルにいないgoods_id=3のレコードが削除されました。
![削除結果](https://tech.omablo.com/wp-content/uploads/sites/5/2021/09/image-8.png)
コメント