「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQL の INSERT ... ON DUPLICATE KEY UPDATE で条件付き更新を実行するにはどうすればよいですか?

MySQL の INSERT ... ON DUPLICATE KEY UPDATE で条件付き更新を実行するにはどうすればよいですか?

2024 年 11 月 17 日に公開
ブラウズ:573

How to Perform Conditional Updates in MySQL\'s INSERT ... ON DUPLICATE KEY UPDATE?

INSERT ... ON DUPLICATE KEY UPDATE の条件更新

MySQL では、INSERT ... ON DUPLICATE KEY UPDATE 構文により次のことが可能になります。挿入操作中に重複キーが見つかった場合のテーブル データの自動更新。ただし、クエリの UPDATE 部分では、条件付き更新を指定するための WHERE 句の使用はサポートされていません。

IF() を使用した回避策

この制限を克服するには、次のようにします。 IF() 関数を利用して、ON DUPLICATE KEY UPDATE 句内で条件付き更新を実装できます。 IF() 関数は条件を評価し、結果に基づいて別の値を返します。

たとえば、次の INSERT ... ON DUPLICATE KEY UPDATE ステートメントを考えてみましょう。

INSERT INTO daily_events (created_on, last_event_id, last_event_created_at)
VALUES ('2010-01-19', 23, '2010-01-19 10:23:11')
ON DUPLICATE KEY UPDATE
  last_event_id = IF(last_event_created_at 

このステートメントでは、IF() 関数は、データベース テーブルの last_event_created_at 列の値が、挿入される値(VALUES(last_event_created_at))。 true の場合、insert ステートメントからの新しい値で last_event_id 列を更新します。それ以外の場合、既存の値は変更されません。

この回避策により、レプリケーションには適さない可能性がある INSERT/UPDATE/SELECT クエリの組み合わせに頼ることなく、INSERT ... ON DUPLICATE KEY UPDATE ステートメントで条件付き更新が可能になります。シナリオ。

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

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

Copyright© 2022 湘ICP备2022001581号-3