mysql - 我可以在 UPDATE 表 MySQL 事务中使用 GROUP BY

标签 mysql

我有两个表:

m3clients
client    balance
joe       0
mark      0
jeff      0

m3orders
client    balance
joe       -100
joe       50
joe       -45
mark      -10
mark      5
jeff      60

我需要更新 m3clients 表的余额字段,其中包含附加在其名称上的余额总和。

所以,它会读成这样:

m3clients
joe    -95
mark   -5
jeff   60

我应该把 GROUP BY 语句放在更新语句的什么地方?

UPDATE m3clients
INNER JOIN m3orders ON (m3orders.client = m3clients.client)
SET m3clients.balance = m3orders.balance

最佳答案

像这样尝试:

UPDATE m3clients m
INNER JOIN (
   SELECT client,SUM(balance) as bal
   FROM m3orders 
   GROUP by client) a ON m.client = a.client
SET m.balance = a.bal

这使用子查询对每个客户的余额求和,然后将其与 m3clients 表连接起来,以便能够使用计算出的余额更新它。

关于mysql - 我可以在 UPDATE 表 MySQL 事务中使用 GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20498845/

相关文章:

mysql - WordPress 获取值之间的最大帖子元

MYSQL条件更新表

mysql - 执行文件中存在的 INSERT 语句

mysql - 函数中带有where子句的sql语句

python - 将数组内的元组转换为Python中的字典

php - 如何在 MySQL 和 PHP 中处理日期和时间?

php - 将整个 mysql 结果集转储到数组中的最有效方法?

mysql - 一张 table 一对多

mysql - 生成一百万个长度为 4 的随机数

php - 向时事通讯订阅者发送大量消息