2

这是 我尝试使用函数的sqlfiddle 链接。 它仅在查询中起作用,但是当我在查询的子查询中尝试此操作时,它给出了错误的值。这是我的查询
sum()SELECTUPDATESELECT

SELECT 
  sum(i.pr_pur_cost_price*i.quantity) AS net_amount
FROM 
  product_purchases AS p
LEFT JOIN 
  product_purchase_item AS i
ON 
  p.product_purchase_item_id=i.product_purchase_item_id
WHERE 
  p.insert_operation=48
GROUP BY 
  p.insert_operation

这里我的更新查询

UPDATE 
  shop_balance AS s 
SET 
   s.shop_balance=(s.shop_balance-(
      SELECT 
         sum(i.pr_pur_cost_price*i.quantity) as net_amount 
      FROM 
         product_purchases AS p
      LEFT JOIN 
         product_purchase_item AS i
      ON
         p.product_purchase_item_id=i.product_purchase_item_id
      WHERE 
         p.insert_operation=48
      GROUP BY 
         p.insert_operation
     )
   )
where s.shop_balance_id=n;    

为什么 UPDATE 查询中有这个错误的值。sum() 函数中的两列有问题吗?或任何最佳解决方案?

4

1 回答 1

1

这是同一个问题吗?

MYSQL 更新使用 sum() 结果跨多个表

update语句不允许group by,如果你只是删除它会不会有问题。

很抱歉,我无法查看在您的场景中是否会出现问题,但在您的更新声明中,我无法理解对它的需求。

您可以尝试删除它们或以不构成实际更新语句本身的一部分的方式添加它们吗?

于 2013-08-06T18:12:41.950 回答