MySQLのON DUPLICATE KEY UPDATEを使用した値の取得方法


以下に、いくつかの方法とそれぞれの方法のコード例を示します。

方法1: VALUES関数を使用する方法

INSERT INTO table_name (column1, column2)
VALUES (value1, value2)
ON DUPLICATE KEY UPDATE
column1 = VALUES(column1),
column2 = VALUES(column2),
column3 = VALUES(column3)

この方法では、VALUES関数を使用して、挿入しようとする値を参照できます。重複したレコードがある場合には、既存のレコードの値をVALUES関数で取得し、更新します。

方法2: SET句を使用する方法

INSERT INTO table_name (column1, column2)
VALUES (value1, value2)
ON DUPLICATE KEY UPDATE
column1 = IFNULL(VALUES(column1), column1),
column2 = IFNULL(VALUES(column2), column2),
column3 = IFNULL(VALUES(column3), column3)

この方法では、IFNULL関数を使用して、VALUES関数から取得した値がNULLの場合には既存の値を保持するようにします。

方法3: SELECT文を使用する方法

INSERT INTO table_name (column1, column2)
SELECT value1, value2
FROM dual
ON DUPLICATE KEY UPDATE
column1 = VALUES(column1),
column2 = VALUES(column2),
column3 = VALUES(column3)

この方法では、SELECT文を使用してVALUES句を置き換えることで、挿入しようとする値を取得します。

これらの方法を使用して、ON DUPLICATE KEY UPDATEで値を取得し、重複したレコードを更新することができます。具体的なテーブル構造や要件に応じて、最適な方法を選択してください。