ホームページ >データベース >mysql チュートリアル >MySQL の 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 サイトの他の関連記事を参照してください。