Mysql 通过从另一个表中计算值来更新和设置列行值

Mysql 通过从另一个表中计算值来更新和设置列行值,mysql,sql,database,phpmyadmin,Mysql,Sql,Database,Phpmyadmin,我有两张桌子: 产品-具有UnitsSold(已售出产品/项目的总/累计金额),以及 销售-哪个有SoldQuantity(每笔交易售出多少个单位) 同一个单元可以销售多次,因此我们需要从sales表中计算它的销售次数,该表包含SoldQuantity,并将结果显示在UnitsSold中,这将显示我们每件商品总共销售了多少件商品 我使用这个查询,但它返回一些问题 #1111-组功能的使用无效): 那么,要返回准确的结果并解决此问题,哪种查询是正确的?您需要在加入之前进行聚合: UPDATE pr

我有两张桌子:

产品-具有UnitsSold(已售出产品/项目的总/累计金额),以及

销售-哪个有SoldQuantity(每笔交易售出多少个单位)

同一个单元可以销售多次,因此我们需要从sales表中计算它的销售次数,该表包含SoldQuantity,并将结果显示在UnitsSold中,这将显示我们每件商品总共销售了多少件商品

我使用这个查询,但它返回一些问题

#1111-组功能的使用无效):


那么,要返回准确的结果并解决此问题,哪种查询是正确的?

您需要在加入之前进行聚合:

UPDATE products p INNER JOIN
       (SELECT s.ItemCode, SUM(s.SoldQuantity) as SoldQuantity
        FROM sales s
        GROUP BY s.ItemCode
       ) s
       ON s.Itemcode = p.Code
    SET p.UnitsSold = s.SoldQuantity;

您可以对您的总和进行子查询

UPDATE products INNER JOIN sales ON sales.Itemcode = products.Code 
SET products.UnitsSold = (SELECT SUM(sales.SoldQuantity) WHERE sales.ItemCode = products.Code)

您好,这可能会工作,但我相信我会再次面临子查询错误,谢谢您的支持effort@Hussein . . . 你不接受这个答案有什么原因吗?它对你不起作用吗?很抱歉,它很有效,第二个答案也很有效,但我使用你的解决方案。谢谢
UPDATE products INNER JOIN sales ON sales.Itemcode = products.Code 
SET products.UnitsSold = (SELECT SUM(sales.SoldQuantity) WHERE sales.ItemCode = products.Code)