MySQL の ON DUPLICATE KEY UPDATE
: 複数行の同時挿入と更新を効率的に処理する
MySQL テーブルに複数の行を挿入する場合、既存のレコードを更新する前に、一意のキー (主キーとは異なる) の存在を確認する必要がある状況が発生します。 ON DUPLICATE KEY UPDATE
句は洗練されたソリューションを提供します。
MySQL 8.0.19 以降のバージョンでは、挿入された行のエイリアスを使用する改善された構文が提供されます。 これにより、よりクリーンで読みやすい更新が可能になります:
<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) AS new ON DUPLICATE KEY UPDATE age = new.age ...</code>
8.0.19 より前の MySQL バージョンの場合 (VALUES
メソッドは 8.0.20 で非推奨になっていることに注意してください)、次のアプローチが必要でした。
<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE age = VALUES(age), ...</code>
どちらの例でも、挿入中に一意のキーの競合が発生した場合、影響を受ける行は指定された値で更新されます。それ以外の場合は、新しい行が追加されます。
VALUES
内の ON DUPLICATE KEY UPDATE
は既存の行の値を参照するのではなく、試行された新しい行の挿入からの対応する列の値を参照することを覚えておくことが重要です。
以上がMySQL の ON DUPLICATE KEY UPDATE は、複数行の同時挿入と更新をどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。