mysqlのMERGE文の使い方は何ですか?
MySQLにはMERGE文がありませんが、同様の機能を他の方法で実現することができます。
MySQLでは、INSERT INTO … ON DUPLICATE KEY UPDATE文を使用して、MERGE文に類似した機能を実現することができます。この文の構文は以下の通りです:
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)
ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2, ...
このステートメントは、データをテーブルに挿入し、重複するユニークキーが存在する場合は、対応する列が更新されます。更新操作を実行するために、ON DUPLICATE KEY UPDATE句で更新する列とその値を指定します。
例えば、employeesというテーブルがあり、id、name、salaryの3つの列が含まれている場合がある。そのうちidが主キーです。新しいレコードを挿入する場合、同じidのレコードがすでに存在する場合、対応するnameとsalary列を更新するために、次のステートメントを使用できます:
INSERT INTO employees (id, name, salary)
VALUES (1, 'John Doe', 5000)
ON DUPLICATE KEY UPDATE name = 'John Doe', salary = 5000;
idが1のレコードがすでに存在している場合、nameとsalary列が更新され、そうでなければ新しいレコードが挿入されます。
MySQLのINSERT INTO … ON DUPLICATE KEY UPDATE文は、唯一のキーを持つテーブルにしか使用できません。テーブルに唯一のキーがない場合は、代わりにユニークインデックスを作成することで同様の機能を実現できます。