0

我将货币值存储在 mysql 数据库中。贷方存储为say 20.00,借方存储为-5.00。然后我需要当前余额

Select Sum(amount) 

在这种情况下给我15.00

示例表 1

uid  amt
1    20
1    -5

示例表 2

uid  amt type
1    20   crd
1    5    dbt

然后在账户历史的情况下,我可以

select * from amount

因为这是监控值,并且由于像 mysql 这样的数据库系统会时不时地贬低功能,我担心这是不是正确的做事方式,我还考虑添加另一个字段来指示事务类型,例如

crd for credit
dbt for debit
etc

你的建议/最好的方法是什么?

4

1 回答 1

2

对我来说,按原样存储数据(即明确)并使用负数会更有意义。如果您使用无符号十进制并存储类型,您仍然可以这样做。

SELECT SUM(IF(type = 'dbt', -1 * amount, amount))
于 2013-09-20T16:19:48.657 回答