データベースを操作する場合、同じ一意の値を持つレコードが重複する可能性がある状況に対処する必要があることがよくあります。挿入または更新することができます。 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)
このステートメントでは、
このアプローチを使用すると、ユーザーは datenum が一意であるときに新しいデータが挿入されることを保証できます。 datenum が重複している場合、既存のデータが更新されることを示します。 datenum フィールドは変更できないため、UPDATE 句に含める必要はありません。
以上がMySQL の INSERT ... ON DUPLICATE KEY UPDATE は条件付きの挿入と更新をどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。