ホームページ > データベース > mysql チュートリアル > MySQL の INSERT ... ON DUPLICATE KEY UPDATE はアップサート操作をどのように処理しますか?

MySQL の INSERT ... ON DUPLICATE KEY UPDATE はアップサート操作をどのように処理しますか?

Mary-Kate Olsen
リリース: 2025-01-21 11:41:10
オリジナル
794 人が閲覧しました

How Does MySQL's INSERT ... ON DUPLICATE KEY UPDATE Handle Upsert Operations?

MySQL の効率的な Upsert 操作: INSERT ... ON DUPLICATE KEY UPDATE を使用します

MySQL データベース管理では、データが存在するかどうかに基づいて新しい行を挿入したり、既存の行を更新したりする必要があることがよくあります。これは「アップサート」操作 (挿入または更新) と呼ばれます。

MySQL は、Upsert 関数を効率的に実装するための INSERT ... ON DUPLICATE KEY UPDATE 構文を提供します。仕組みは次のとおりです:

<code class="language-sql">INSERT INTO `table_name`
(`column1`, `column2`, ...)
VALUES
(value1, value2, ...)
ON DUPLICATE KEY UPDATE
`column1` = value1_updated,
`column2` = value2_updated,
...</code>
ログイン後にコピー

INSERT 句は、テーブルに挿入される値を指定します。 ON DUPLICATE KEY UPDATE 句は、同じ主キー (または一意のインデックス) を持つ行がテーブル内にすでに存在する場合に何を行うかを定義します。

たとえば、次の表を考えてみましょう:

<code class="language-sql">CREATE TABLE `usage` (
    `thing_id` INT NOT NULL PRIMARY KEY,
    `times_used` INT DEFAULT 0,
    `first_time_used` TIMESTAMP
);</code>
ログイン後にコピー

4815162342 の行 thing_id に新しいデータを挿入し、times_used 列を 1 増やして、first_time_used を現在のタイムスタンプに設定する場合は、次の Upsert クエリを使用できます。

<code class="language-sql">INSERT INTO `usage`
(`thing_id`, `times_used`, `first_time_used`)
VALUES
(4815162342, 1, NOW())
ON DUPLICATE KEY UPDATE
`times_used` = `times_used` + 1</code>
ログイン後にコピー

4815162342 の thing_id を含む行がすでに存在する場合、クエリは times_used を変更せずに first_time_used 列を更新します。それ以外の場合は、新しい行が挿入されます。

INSERT ... ON DUPLICATE KEY UPDATE は、MySQL で Upsert 操作を実行するための柔軟で効率的なテクノロジーです。これにより、単一のクエリを使用して挿入および更新操作を実行できるため、コードが簡素化され、パフォーマンスが向上します。

以上がMySQL の INSERT ... ON DUPLICATE KEY UPDATE はアップサート操作をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート