INSERT ... ON DUPLICATE KEY 的條件更新
根據重複鍵條件插入或更新記錄是資料庫程式設計中常見的場景。但是,有時您可能需要進一步限制更新條件,使其依賴其他條件。不幸的是,INSERT ... ON DUPLICATE KEY UPDATE 語法本身並不支援條件更新的 WHERE 子句。
克服限制
要解決此限制,您可以在 UPDATE 子句中使用 IF() 函數。 IF() 函數可讓您根據給定的邏輯表達式指定替代值。
範例實作
範例實作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);範例實作
考慮以下 INSERT ... ON DUPLICATE KEY UPDATE查詢:
請記住,如果條件為 false,則 IF() 的計算結果為 NULL。因此,如果不符合條件,last_event_id 的更新值也會為 NULL。 請考慮使用附加 WHERE 子句或單獨的 UPDATE 查詢來確保對更新進行所需的篩選。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3