![](/img/trans.png)
[英]joomla-php mysql not updating a record with data from previous query
[英]Error updating record: Invalid use of group function for updating previous all data
$sql = "UPDATE purchase SET stat='1' WHERE `id`='$id' AND 4*(plan)<= sum(plan) ";
要么
$sql = "UPDATE purchase SET stat='1' WHERE `id`='$id' AND 4*(plan-1)<= sum(plan-1) ";
我正在嘗試通過此更新進行查詢,如果所有行的總和大於第一行,它將更新第一行,並且此規則適用於所有行。 但它顯示錯誤並說
Error updating record: Invalid use of group function
此查詢有什么問題? 我需要此錯誤的幫助。
您不能在查詢的WHERE
子句中使用像SUM()
這樣的聚合函數,因為SUM()
是對所有選定行進行計算的,但是WHERE
用於選擇行。 您需要在單獨的查詢中計算總和,然后將其加入。
UPDATE purchase
JOIN (SELECT SUM(plan) AS plantotal FROM purchase) AS p1
ON 4*(plan-1) <= plantotal
SET stat = '1'
WHERE id = '$id'
為了使更新基於具有更高ID的所有行,您可以與一個子查詢結合使用,該子查詢獲取每組行的總數。
UPDATE purchase AS p
JOIN (SELECT p1.id AS id, SUM(p2.plan) AS plantotal
FROM purchase AS p1
JOIN purchase AS p2 ON p2.id > p1.id) AS p3
ON p3.id = p.id AND 4*(p.plan-1) <= p3.plantotal
SET stat = '1'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.