ホームページ  >  記事  >  データベース  >  MySQL の INSERT ... ON DUPLICATE KEY UPDATE で条件付き更新を実行する方法

MySQL の INSERT ... ON DUPLICATE KEY UPDATE で条件付き更新を実行する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-31 00:13:30443ブラウズ

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 < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);

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

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

以上がMySQL の INSERT ... ON DUPLICATE KEY UPDATE で条件付き更新を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。