【发布时间】:2020-12-27 01:47:04
【问题描述】:
我还是 MySQL 新手,目前正在解决更新银行交易中最终余额的问题。我首先得到了下表。 The given table named as "transaction"
我预计会给出以下结果; The expected result
我设法通过以下 MySQL 代码处理了 credit_balance 列;
UPDATE transaction
SET credit_debit = CASE money_in_or_out
WHEN "OUT" THEN amount*(-1)
ELSE amount*(1)
END;
ALTER TABLE `sql_invoicing`.`transaction`
CHANGE COLUMN `credit_debit` `credit_debit` DECIMAL(9,2) NULL DEFAULT NULL ;
至于余额一栏,我只管写了以下;
UPDATE transaction
SET balance =
(SELECT balance + credit_debit
ORDER BY payment_id DESC
LIMIT 1);
产生以下错误的结果; The returned result
因此,任何人都可以提出任何建议来解决这个问题吗?谢谢!
【问题讨论】:
-
通常,您会将余额作为帐户表的一部分,而不是作为交易表的一部分。如果您想在每次交易后存储余额,那么我会将其计算为应用程序逻辑的一部分,而不是 sql。基本上是在上一笔交易后取bakance,加上或减去当前交易的值。
-
@Shadow 嗨,我并不介意账户和交易表(顺便说一句,它只是一个虚拟数据),因为这里的最终目标是让我了解如何编写算法更新银行交易,因为我是 MySQL 新手(刚开始不到 3 周前)。但是,随着我的进步,我会始终牢记这一点。谢谢!
标签: mysql sql sum sql-update subquery