INSERT ... ON DUPLICATE KEY の条件付き更新
重複キー条件に基づいてレコードを挿入または更新することは、データベース プログラミングの一般的なシナリオです。 。ただし、更新条件をさらに制限して、追加の基準に依存させる必要がある場合があります。残念ながら、INSERT ... ON DUPLICATE KEY UPDATE 構文は、条件付き更新の WHERE 句をネイティブにサポートしていません。
制限の克服
この制限を回避するには、次のようにします。 UPDATE 句内で IF() 関数を利用できます。 IF() 関数を使用すると、指定された論理式に基づいて代替値を指定できます。
実装例
次の INSERT ... ON DUPLICATE KEY UPDATE を考えてみましょう。 query:
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);
このクエリでは、UPDATE 句に、既存の last_event_created_at 値が挿入される値より小さいかどうかを確認する IF() ステートメントが含まれています。既存の値が古い場合は、更新が実行され、last_event_id が新しい値に置き換えられます。それ以外の場合は、既存の last_event_id が保持されます。
追加の考慮事項
以上がSQL で INSERT ... ON DUPLICATE KEY を使用して条件付き更新を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。