条件付き INSERT ... ON DUPLICATE KEY UPDATE
INSERT ... ON DUPLICATE KEY UPDATE を使用する場合、適用が必要になる場合があります。特定の条件が満たされた場合にのみ、条件付きで更新されます。ただし、UPDATE 句での WHERE の使用はサポートされていません。
IF() による回避策
この制限を克服するには、IF( ) 関数を使用して条件を評価し、更新を実行するかどうかを決定します。次の構文は、この回避策を示しています。
INSERT INTO table_name (column1, column2) VALUES (value1, value2) ON DUPLICATE KEY UPDATE column2 = IF(condition, new_value, old_value);
例:
次のシナリオを考えてみましょう:
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);
この例では、更新to last_event_id は、受信行の last_event_created_at の値がデータベース内の既存の値よりも新しい場合にのみ発生します。これにより、最新のイベントが確実に記録されます。
以上がINSERT ... ON DUPLICATE KEY UPDATE を使用して条件付きでデータを更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。