【发布时间】: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