ホームページ >データベース >mysql チュートリアル >MySQL の ON DUPLICATE KEY UPDATE は、複数行の同時挿入と更新をどのように処理できますか?

MySQL の ON DUPLICATE KEY UPDATE は、複数行の同時挿入と更新をどのように処理できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-11 07:02:41953ブラウズ

How Can MySQL's ON DUPLICATE KEY UPDATE Handle Simultaneous Inserts and Updates of Multiple Rows?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。