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 < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);
In在此語句中,IF() 函數檢查資料庫表中last_event_created_at 列的值是否小於插入的值(VALUES(last_event_created_at))。如果為 true,它將使用插入語句中的新值來更新 last_event_id 欄位。否則,它將保持現有值不變。
此解決方法允許在 INSERT ... ON DUPLICATE KEY UPDATE 語句中進行條件更新,而無需求助於 INSERT/UPDATE/SELECT 查詢的組合,這可能不適合複製場景。
以上是如何在 MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 執行條件更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!