mysql UPDATE文で他のテーブルから条件を絞りたい

UPDATE文の条件にselete文のfrom句を使いたい

作成日:2023-09-06, 更新日:2023-09-06

やりたいこと

下記のようなテーブルで「user_detail.age < 20」を条件に、「user.class = z」に変更したい

■テーブル: user

id name class
1 太郎 a
2 光子 a
3 花子 b
4 亜子 a
5 三郎 c
6 次郎 a
■テーブル: user_detail

user_id age
1 35
2 15
3 31
4 21
5 17
6 27

UPDATE文

UPDATE user
SET class = 'z'
WHERE id IN (
    SELECT u.id
    FROM user u
    INNER JOIN user_detail ud ON u.id = ud.user_id
    WHERE ud.age < 20
);

UPDATE文の実行前に…

いきなり上記のUPDATE文を実行でもいいけど、先に対象を確認するならwhere句内のselect文を実行

SELECT u.id
FROM user u
INNER JOIN user_detail ud ON u.id = ud.user_id
WHERE ud.age < 20
;