INSERT ... ON DUPLICATE KEY 的條件更新
基於重複鍵條件插入或更新記錄是資料庫程式設計中常見的場景。但是,有時您可能需要進一步限制更新條件,使其依賴其他條件。不幸的是,INSERT ... ON DUPLICATE KEY UPDATE 語法本身不支援條件更新的 WHERE 子句。
克服限制
要解決此限制,您可以在 UPDATE 子句中使用 IF() 函數。 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);
在此查詢中,UPDATE 子句包含一個IF() 語句,用來檢查現有的last_event_created_at 值是否小於要插入的值。如果現有值較舊,則會執行更新,以新值取代last_event_id。否則,現有的 last_event_id 將會保留。
其他注意事項
以上是如何在 SQL 中使用 INSERT ... ON DUPLICATE KEY 實作條件更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!