在here處有類似的問題,但似乎太舊了,因爲回答在2009年提供,只收到7個支持。我相信有一個更好的策略。如何使用一個查詢根據相對值更新表列
表如下:
id weight cost
1 1.2 0
2 2.5 0
3 2.9 0
...
其中重量和成本是一個物品的重量和成本。現在我想通過給出總成本N來更新每個id的成本。每個id的成本是基於其相對於總重量的相對權重的總成本的一小部分。
以一個表僅具有三排如上,總重量爲1.2 + 2.5 + 2.9 = 6.6,因此,IDS 1,2和成本3是:
N*1.2/6.6
N*2.5/6.6
N*2.9/6.6
有一種方法對於我使用單個查詢來執行此更新?我嘗試了一些東西,但它給了我錯誤信息SQLSTATE[HY000]: General error: 1111 Invalid use of group function
;這裏是我的代碼,我想知道到底爲什麼它不能做到這樣:
UPDATE `table`
SET `cost` = `cost` + :total_cost * `weight`/SUM(`weight`)
WHERE 1
@TimBiegeleisen,感謝您指出。但是這個問題似乎太老了,因爲答案是在2009年提供的,只得到7個支持。我相信有更好的答案。 – Dainy
在更新過程中,MySQL是否改變了自己的限制?如果是這樣,那麼你有另一種選擇。 –