😅

[SQL]UPDATE FROM とは(備忘録)

2024/10/02に公開

1.UPDATE FROM とは

テーブル1から取得した結果を用い、テーブル2の複数のデータを一気に更新する」というクエリです。

UPDATE FROM の書き方
UPDATE テーブル2
    SET テーブル2.列1 = テーブル1.列1,
        テーブル2.列2 = テーブル1.列2    
FROM テーブル1
    WHERE 条件
;

重要:
UPDATE FROMは、全てのデータベースで使用できるわけではありません。
PostgreSQLでは使用できますが、MySQLでは異なる書き方が必要です。

2.サンプルプログラム

Sample.sql
CREATE TABLE users (
    user_id SERIAL PRIMARY KEY,
    name VARCHAR(10) NOT NULL,
    email VARCHAR(100) NOT NULL
);

CREATE TABLE user_update (
    user_id INT NOT NULL,
    new_email VARCHAR(100) NOT NULL
);

INSERT INTO users (
    name,
    email
)
VALUES
('鈴木', 'user1@sample.com'),('山田', 'user2@sample.com')
,('大谷', 'user3@sample.com')
;

INSERT INTO user_update (
    user_id,
    new_email
)
VALUES
(1, 'new_user1@sample.com'),(2, 'new_user2@sample.com')
,(3, 'new_user3@sample.com')
;

-- UPDATE FROM 文
UPDATE users AS a1
    SET email = new_email
FROM user_update AS a2
    WHERE a1.user_id = a2.user_id
;

-- 結果確認
SELECT * FROM users;

実行結果

user_id name email
1 鈴木 new_user1@sample.com
2 山田 new_user2@sample.com
3 大谷 new_user3@sample.com

3.参考

第20回 RDBMSの種類によるUPDATE文の仕様の違い

4.その他

実行環境

Discussion