Mysql 通过计算来自另一个表的结果来更新表

Mysql 通过计算来自另一个表的结果来更新表,mysql,sql,Mysql,Sql,我试图通过计算来自其他表T2和T3的SQL查询的结果来更新表T1 这是我提出的问题,但似乎不起作用: UPDATE T1 set Stock = (SELECT count(ID_Item) FROM T2,T3 WHERE T2.ID_Product = T1.ParentSKU AND T3.ID = T2.ID_Product AND Stock_Items.Name = '

我试图通过计算来自其他表T2和T3的SQL查询的结果来更新表T1

这是我提出的问题,但似乎不起作用:

UPDATE T1
set Stock =
(SELECT count(ID_Item)
                 FROM T2,T3
                 WHERE T2.ID_Product = T1.ParentSKU AND
            T3.ID = T2.ID_Product AND
            Stock_Items.Name = '' AND
            Stock_Items.Returned = ''

        GROUP BY(T3.Size)
                )

我想做的是通过计算T2的结果并将T3的不同大小分组来更新T1。

您需要删除
分组依据
,如果您的项有多个大小,则子查询将返回多个结果,并且更新将失败

UPDATE T1
set Stock =
(SELECT count(ID_Item)
                 FROM T2 INNER JOIN T3
                 WHERE T2.ID_Product = T1.ParentSKU AND
            T3.ID = T2.ID_Product AND
            Stock_Items.Name = '' AND
            Stock_Items.Returned = '' AND
            T3.Size = T1.Size
                )

如果大小不是一个因素,那么将其从子查询中完全删除

mysql或sql server?什么似乎不起作用?您是否发现任何错误?这是一个mysql服务器。请提供示例数据和所需结果。您的非工作查询没有提供足够的信息。请删除
groupby(T3.Size)
,并将其作为要更新的大小的
WHERE
子句。另一方面,如果存在不同的大小,则子查询将返回多个值,这将导致它失败。谢谢,但是,此查询仅为每个T1.ParentSKU更新一个大小的库存。我需要它根据T1.ParentSKU更新所有尺寸。@PierreS。你真的测试过它吗,还是你只是假设?也许给我们看看你真正的桌子结构。如果有多个尺寸,则必须按
ParentSKU、Size
组合进行计数。我怀疑你的实际查询与你提供的不同。你是对的,我的查询出错了。你的解决方案很完美。再次感谢你。