ホームページ > データベース > mysql チュートリアル > MySQL の INSERT ... ON DUPLICATE KEY UPDATE は条件付きの挿入と更新をどのように処理できますか?

MySQL の INSERT ... ON DUPLICATE KEY UPDATE は条件付きの挿入と更新をどのように処理できますか?

Barbara Streisand
リリース: 2024-12-13 15:07:10
オリジナル
187 人が閲覧しました

How Can MySQL's INSERT ... ON DUPLICATE KEY UPDATE Handle Conditional Inserts and Updates?

MySQL での条件付き挿入および更新による重複の管理

データベースを操作する場合、同じ一意の値を持つレコードが重複する可能性がある状況に対処する必要があることがよくあります。挿入または更新することができます。 MySQL は、INSERT ... ON DUPLICATE KEY UPDATE 構文を通じて、このシナリオに便利なソリューションを提供します。

質問に記載されている状況を考えてみましょう。ユーザーは、AggregatedData テーブルに新しいデータを挿入したいと考えています。ただし、datenum フィールドがテーブルにまだ存在しない場合にのみ、このデータが挿入されるようにしたいと考えています。存在する場合、タイムスタンプ フィールドを新しい値で更新したいと考えます。

ユーザーが使用した最初のアプローチには UPDATE ステートメントが含まれていました。

UPDATE AggregatedData SET datenum="734152.979166667", Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667";
ログイン後にコピー

このステートメントは次の場合に機能します。 datenum 値はすでに存在しますが、その値がテーブルに存在しない場合は失敗します。この状況を効果的に処理するには、INSERT ... ON DUPLICATE KEY UPDATE が機能します。

この操作の正しい構文は次のとおりです。

INSERT INTO AggregatedData (datenum, Timestamp)
VALUES ("734152.979166667", "2010-01-14 23:30:00.000")
ON DUPLICATE KEY UPDATE 
  Timestamp=VALUES(Timestamp)
ログイン後にコピー

このステートメントでは、

  • INSERT ... 部分は、指定された行をテーブルに新しい行を挿入しようとします。 data.
  • ON DUPLICATE KEY UPDATE ... 部分は、同じ datenum 値を持つ行がすでに存在する場合の動作を指定します。この場合、VALUES(Timestamp) 句で指定された値で Timestamp フィールドを更新します。

このアプローチを使用すると、ユーザーは datenum が一意であるときに新しいデータが挿入されることを保証できます。 datenum が重複している場合、既存のデータが更新されることを示します。 datenum フィールドは変更できないため、UPDATE 句に含める必要はありません。

以上がMySQL の INSERT ... ON DUPLICATE KEY UPDATE は条件付きの挿入と更新をどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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