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