是否可以在SQL中创建一些带有数学函数的字段? 如果是,我应该怎么做这个问题?



我正在研究一个SQL表,每天节省交易费用。 这是我的表格设计:

CREATE TABLE `transaction` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`date` datetime NOT NULL,
`member_id` int(11) NOT NULL,
`name` varchar(60) CHARACTER SET utf8 DEFAULT NULL,
`balance_lastMonth` int(11) NOT NULL,
`income` int(11) NOT NULL,
`outcome` int(11) NOT NULL,
`balance` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`),
CONSTRAINT `transaction_ibfk_1` FOREIGN KEY (`member_id`) REFERENCES `member` (`id`)
) ENGINE=InnoDB CHARSET=latin1

余额字段公式:balance_lastMonth+income-outcomebalance_lastMonth是上个月的余额

是否可以在一个表中实现它? 如果是,该怎么做? 或者可能有更好的方法可以做到这一点。 我正在使用 10.4.6-MariaDB。

您可以使用查询计算余额:

select t.*,
sum(income - outcome) over (partition by member_id order by date) as balance,
sum(income - outcome) over (partition by member_id order by date) - (income - outcome) as balance_lastmonth
from transaction t;

最简单的方法是将其封装在视图中并使用它。

如果确实要将结果存储在表中,则需要使用触发器。 我不建议使用这种方法,除非您对存储余额有某种要求。

相关内容

  • 没有找到相关文章

最新更新