「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQLの挿入はどのようにして...重複したキーアップデートはupSert操作を処理しますか?

MySQLの挿入はどのようにして...重複したキーアップデートはupSert操作を処理しますか?

2025-02-26に投稿されました
ブラウズ:729

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

mysqlの効率的なupsert操作:挿入を使用...重複したキーアップデート

]

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

mysqlは、 insert ... on complicate key update syntaxを提供して、upsert関数を効率的に実装します。その作業原則は次のとおりです。

INSERT INTO `table_name`
(`column1`, `column2`, ...)
VALUES
(value1, value2, ...)
ON DUPLICATE KEY UPDATE
`column1` = value1_updated,
`column2` = value2_updated,
...

挿入句は、テーブルに挿入する値を指定します。 重複するキーアップデート句は、テーブルに同じプライマリキー(または一意のインデックス)がある行がある場合に実行されるアクションを定義します。

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

CREATE TABLE `usage` (
    `thing_id` INT NOT NULL PRIMARY KEY,
    `times_used` INT DEFAULT 0,
    `first_time_used` TIMESTAMP
);

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

INSERT INTO `usage`
(`thing_id`, `times_used`, `first_time_used`)
VALUES
(4815162342, 1, NOW())
ON DUPLICATE KEY UPDATE
`times_used` = `times_used`   1
4815162342の

thing を備えた行がすでに存在する場合、クエリは times_used 列を更新しますが、 first_time_used は不変のままです。それ以外の場合は、新しいラインが挿入されます。

挿入...重複するキーアップデートは、MySQLでUPSERT操作を実行するための柔軟で効率的なテクノロジーです。これにより、単一のクエリで挿入および更新操作を実行し、コードを簡素化し、パフォーマンスを向上させることができます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3