MySql 根據唯一條件插入或更新
將資料插入 MySQL 表中通常需要在執行更新之前檢查資料是否已存在。然而,在處理唯一的非主鍵列時,傳統的 UPDATE 語句就顯得力不從心了。
在這種情況下,如果 datenum 欄位不存在,使用者會尋求有效的方法將資料插入 AggregateData 表中,或更新現有行(如果存在)。
解決方案:INSERT ... ON DUPLICATE KEY UPDATE
根據Jai 的建議,最適合的解決方案是使用INSERT ... ON DUPLICATE KEY UPDATE 語法:
INSERT INTO AggregatedData (datenum,Timestamp) VALUES ("734152.979166667","2010-01-14 23:30:00.000") ON DUPLICATE KEY UPDATE Timestamp=VALUES(Timestamp)
如果datenum則此語句執行插入沒有找到。如果確實存在,它將使用 VALUES() 函數中提供的值來更新 Timestamp 欄位。
說明
VALUES() 函數確保用於更新的值與 INSERT 語句中指定的值相同。這可以防止意外的列值更新。
INSERT ... ON DUPLICATE KEY UPDATE的優點
以上是MySQL插入或更新:如何有效率地處理唯一非主鍵列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!