😅
[SQL]UPDATE FROM とは(備忘録)
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 | |
---|---|---|
1 | 鈴木 | new_user1@sample.com |
2 | 山田 | new_user2@sample.com |
3 | 大谷 | new_user3@sample.com |
Discussion