2008-12-05 37 views
4

說p.products_price等於1MySQL的更新數學

爲什麼:

UPDATE products p 
SET p.products_price = (1 + p.products_price) 
WHERE p.products_id = 8 

化妝p.products_price等於3?

它將價格加1,然後再做一遍?我試圖做一些更復雜的事情,但當它不起作用時,我把它分解成有史以來最簡單的事情。我可以在這裏做一些臨時價值並計算新價格,然後將其設置爲?

請大家幫忙我怒, 謝謝。

的MySQL客戶端版本4.1.22

編輯:列是十進制的類型,我試着用同樣的結果int列相同的更新。

編輯:這是不是在運行的代碼,所以沒有調用同一個更新兩次

+0

我一直有這似乎雖然它看來,當有問題的網頁刷新加入2是完全一樣的問題,但在腳本的初始加載/運行時,它會正確添加1。這是否給任何人一個線索? – t1m0thy 2014-12-14 16:28:52

回答

0

這絕對應該設置products_price 2。必須有別的事情上的代碼的機會。

這與Problem with updating a MySQL field with PHP類似,但在那裏沒有好的解決方案,所以我會留下這個開放的。

您是從客戶端還是通過腳本運行它?

您是否有任何打開的事務或訪問數據庫的其他腳本?

編輯:你在你的評論中提到了連接 - 我願意打賭你的連接不止一次拉回同一行。

+0

沒有別的事情發生,我首先通過php腳本來做,但現在我在phpmyadmin中運行它。真正的更新有幾個連接,並可以有一些地方。 – 2008-12-05 20:43:36

+0

啊我敢打賭,這是連接 - 你必須不止一次地選擇同一行 – Greg 2008-12-05 20:55:02

+0

不,我從字面上運行SQL上面,它仍然這樣做,即使我說'where product_id = 200':( – 2008-12-05 20:56:27

0

你的SQL看起來很好。 '東西'專欄是獨一無二的嗎?確保您只更新單個記錄。

4
UPDATE products  
SET products_price = (1 + products_price)  
WHERE products_id = 8 

作品像它應該(刪除表的別名「P」)