【发布时间】:2020-09-08 15:14:28
【问题描述】:
我正在使用关系数据库(MySQL 5.7)。在这个数据库上,我有一个名为 customer_transaction 的表。在这张表上,我有 4 列:id、customer_id、type、amount
|id|customer_id |type |amount|
|--|------------|---------|------|
|1 |44 |Credit |50 |
|2 |44 |Credit |20 |
|3 |44 |Debit |30 |
|4 |10 |Credit |30 |
现在我要在此表上引入一个新的余额列(当前余额),如下所示。
|id|customer_id |type |amount|balance|
|--|------------|---------|------|-------|
|1 |44 |Credit |50 |50 |
|2 |44 |Credit |20 |70 |
|3 |44 |Debit |30 |40 |
|4 |10 |Debit |30 |-30 |
问题是,在客户交易表上,他们有近百万行,所有余额列都是0.00。
所以我想重新同步所有余额数据。但我很困惑如何重新计算和更新所有这些行。我可以通过 MySQL 查询或从我的应用程序(Laravel-PHP)计算和更新来更新它吗?
【问题讨论】:
-
是的,你可以做到。使用会话变量来保存上一行的运行余额,并根据类型是
Credit还是Debit进行加减运算。当 customer_id` 更改时,您将变量设置回0。
标签: mysql sql sql-update large-data