簡體   English   中英

更新記錄錯誤:無效使用組功能更新以前的所有數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM