我有一个名为results的数据库,它是一个特定问题的投票结果。现在我的问题是,如果一个表中的一个属性是其他两个属性的和,那么这个属性是否可能。例子:
数据库的属性包括:
赞成票
没有投票
弃权票
选民总数(投票人数)
CREATE TABLE `results` (
`result_id` varchar(10) NOT NULL,
`count_yes` int(3),
`count_no` int(3),
`count_abstain` int(3),
`total_voters` *Default sum of yes no and abstain votes*,
UNIQUE (result_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
提前谢谢!
4条答案
按热度按时间toiithl61#
如果您使用的是mysql 5.7.6或更新版本,那么可以使用生成的列
qrjkbowd2#
您应该创建一个视图来计算额外的
total_voters
列。disbfnqx3#
有两种方法可以将其作为表/视图对象:
方法1:创建一个视图,该视图适用于所有版本的mysql。您可以创建一个视图,其中有一个额外的列来汇总投票,如下所示:
注意使用
COALESCE(..., 0)
以确保你NULL
值为零。任何一个数学和NULL
在mysql中等于NULL
. 即。NULL + 2
=NULL
.方法2:在基表中使用生成的列这在mysql v5.7.6+中适用。将表语句重新定义为:
请注意该列
total_voters
. mysql将其称为生成列,尽管sql的其他风格倾向于将其称为计算列。如果已有表,只需添加列即可,如下所示:
ecfdbz9o4#
选择源表中的行数。这应该给你一个价值
total_voters
您可以将其插入到结果表中。SELECT COUNT(*) FROM source_table
. 如果您提供源表的模式,我可以更好地帮助您。