遞減值下似乎賠率對我說:對重複密鑰更新 - 在MySQL
INSERT INTO sometable (UNIQUEVALUE,NUMERICVALUE) VALUES ('valuethatexists','100') ON DUPLICATE KEY UPDATE NUMERICVALUE = NUMERICVALUE+VALUES(NUMERICVALUE);
假設你NUMERICVALUE
爲0時
以上將其更改爲100 - 這確實工作。
但是,如果您輸入-100,則無法正常工作。
INSERT INTO sometable (UNIQUEVALUE,NUMERICVALUE) VALUES ('valuethatexists','-100') ON DUPLICATE KEY UPDATE NUMERICVALUE = NUMERICVALUE+VALUES(NUMERICVALUE);
上面的語句應該返回到0.它不是,在我的情況。它仍然在100.
我錯過了什麼嗎?
編輯:這在別的地方出錯了。我正在用PHP做這個。顯示此錯誤的實際代碼如下所示:
編輯2:這與PHP無關。問題是我的生產環境中的NUMERIC值爲UNSIGNED,這意味着VALUES(NUMERICVALUE)在使用前從-100變爲0。
我只是嘗試SQLFiddel和我自己的5.7數據庫。你是對的 - 它按預期做到了。我通過PHP來做這件事,顯然這在其他地方是錯誤的。我會嘗試進一步調查。 – nickdnk
好,只要一次嘗試隔離問題一步:) – Benjamin
查看PHP示例更新的答案。 – nickdnk