【问题标题】:update query issue of GROUP BY sum() function in mysqlmysql中GROUP BY sum()函数的更新查询问题
【发布时间】:2013-08-07 19:26:24
【问题描述】:

这里是sqlfiddle link
我正在尝试使用sum() 函数。它仅适用于SELECT 查询,但当我在UPDATE 查询的子查询中尝试此操作时,它给出了错误的值。这是我的SELECT 查询

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() 函数中的两列有问题吗?或任何最佳解决方案?

【问题讨论】:

  • 您能否展示一些示例数据和所需的(正确)结果?
  • 我的第一个 SELECT 查询返回 FLOAT 数据类型假设为 2200。如果我的 s.shop_balance 为 2500。它应该返回 300。但它给出了错误的值
  • where s.shop_balance_id=n; - "n" 是有效的 shop_balance_id 吗?
  • 是的,它是任何整数值
  • @coder.我不明白这个错误是如何发生的。您的代码看起来工作正常。你能在 sqlfiddle 上添加一些数据来显示问题吗?

标签: mysql sql group-by sql-update subquery


【解决方案1】:

这是同一个问题吗?

MYSQL Update using sum() result across multiple tables

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

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

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

【讨论】:

  • sqlfiddle 工作。但在我的本地主机上工作
  • 事实并非如此。他正在做对上述问题中的海报有用的事情。
  • 一旦有一个过滤器只选择一个特定的插入操作,group by 就会产生影响,而在 sqlfiddle 中,只是为了确保清晰,您将其设置为 Mysql?
  • 非常感谢@skv。也很抱歉让。我通过不在UPDATE 声明中工作来确保该组
  • 哦,我正在使用触发器,所以别担心,我可能不会错过 UPDATE 声明
猜你喜欢
  • 1970-01-01
  • 2017-10-20
  • 1970-01-01
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多