我有一个系统余额表“A
”,其中“金额”列是借方/贷方列,如下所示:
id amount balance
1 100 100
2 -30 70
3 40 110
4 -20 90
如果新存款为 50 美元,则必须插入新行:
5 50 140
我可以通过选择最后的余额来实现这一点:
SELECT id, balance
FROM A
ORDER BY id DESC LIMIT 1
然后插入新行:
INSERT INTO A (amount, balance)
VALUES (50, previous_balance+50)
但是,有没有一种方法可以仅通过一个查询来实现这一目标?它对大型数据库有效吗?谢谢!
最佳答案
正确的做法是:
INSERT INTO A(amount,balance)
VALUES (50, 50 +
(SELECT B.balance
FROM(SELECT balance FROM A ORDER BY id DESC LIMIT 1) AS B)
);
因为 mysql 无法修改您在 SELECT 部分中使用的同一个表
关于php - 插入行,其单元格数量取决于前一行单元格数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42621562/