INSERT ... ON DUPLICATE KEY 更新中的條件更新
在MySQL 中,INSERT ... ON DUPLICATE KEY UPDATE 語句允許您如果具有相同唯一鍵的行已存在,則插入新行或更新現有行。但是,有時您可能會要求更新部分是有條件的,僅在滿足特定條件時才執行。
不幸的是,ON DUPLICATE KEY UPDATE 語法不支援 WHERE 子句。若要克服此限制,您可以在 UPDATE 子句中使用 IF() 函數。
IF() 函數採用三個參數:一個條件、條件為 true 時要傳回的值、要傳回的值。如果條件為假則回傳。這允許您指定一個條件來檢查額外條件是否已更改,然後有條件地設定要更新的值。
例如,考慮以下語句:
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);
中在此語句中,只有當現有行的last_event_created_at 列早於VALUES 子句中的值時,才會更新last_event_id 列。否則,last_event_id 將保持不變。
以上是如何在 MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 實現條件更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!