データベース - SQL 基本構文 - INSERT(UPSERT) - UPSERT MySQL


クラウディア 


1. 概要
2. ON DUPLICATE KEY
3. 参考サイト

1. 概要

 「MySQL」で「UPSERT」を実現する方法です。

2. ON DUPLICATE KEY

 下記のようにテーブルを作成しているとして。

CREATE TABLE users
(
  email VARCHAR(255) NOT NULL
  , name VARCHAR(255) NOT NULL
  , age TINYINT UNSIGNED NOT NULL
  , PRIMARY KEY (email, name)
);
 下記の「SQL」を用います。

INSERT INTO users (email, name, age)
VALUES ('test@example.com', 'Taro', 30)
ON DUPLICATE KEY UPDATE
    name = VALUES(name),
    age  = VALUES(age);
 テーブルが空っぽの状態で、上記を実行すると。

SELECT * FROM users;
 の結果が下記になります。

+------------------+------+-----+
| email            | name | age |
+------------------+------+-----+
| test@example.com | Taro |  30 |
+------------------+------+-----+
 この状態で、下記の「SQL」を実行すると。

INSERT INTO users (email, name, age)
VALUES ('test@example.com', 'Taro', 31)
ON DUPLICATE KEY UPDATE
    name = VALUES(name),
    age  = VALUES(age);
 「SELECT」の結果は、下記になります。

+------------------+------+-----+
| email            | name | age |
+------------------+------+-----+
| test@example.com | Taro |  31 |
+------------------+------+-----+

3. 参考サイト

 本ページは、「ChatGPT」軍曹を参考にさせていただきました。

EaseUS