作成日: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 ;