INSERT ... ON DUPLICATE KEY UPDATE:條件更新
執行INSERT ... ON DUPLICATE KEY UPDATE 操作時,它是有時需要根據特定條件有條件地執行更新。但是,此語句的 UPDATE 部分不允許使用 WHERE 子句。
使用 IF() 的解決方法
要實現條件更新,一個解決方案是利用IF() 函數。透過評估 IF() 表達式中的條件,您可以根據結果為更新的列指定不同的值。
範例
考慮下表:
CREATE TABLE daily_events ( created_on DATE, last_event_id INT, last_event_created_at DATETIME );
要只在last_event_created_at 欄位發生變更時有條件地更新last_event_id 資料列,可以使用以下查詢:
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);
在此查詢中,IF() 函式檢查是否資料庫中last_event_created_at的值小於插入的值。如果為true,則將last_event_id更新為插入的值;否則,保留現有值。
複製相容性
此方法與複製相容,因為它不涉及對資料庫架構的任何額外查詢或修改。
以上是如何在 INSERT ... ON DUPLICATE KEY UPDATE 語句中執行條件更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!