我有一个表名Student,如图所示
当我输入主题的标记值时,我想自动在它们的相应列中自动显示合计和平均,如果我想通过使用查询手动在合计和平均列中插入值,应该显示错误。
答案 0 :(得分:1)
根据数据样本,应为每个参数添加值,并将结果除以arsg的数量
select RollNo
, Name
, STD
, Mobile_no
, physics
, Chemstry
, Maths
, Hindi
, English
, ( physics+ Chemstry+ Maths+Hindi+ English) as Total
, ( physics+ Chemstry+ Maths+Hindi+ English) / 5 as average
from my_table
答案 1 :(得分:1)
如果您的mysql版本支持生成的列,则可以使用此功能。如果您尝试插入到生成的列,则Mysql将引发错误。例如。
drop table if exists t;
create table t(id int, s1 int,s2 int, total int as (ifnull(s1,0)+ifnull(s2,0)));
insert into t(id,s1,s2) values (1,10,20);
Query OK, 1 row affected (0.03 sec)
insert into t(id,s1,s2,total) values (2,20,null,5);
ERROR 1906 (HY000): The value specified for computed column 'total' in table 't' ignored
select * from t;
+------+------+------+-------+
| id | s1 | s2 | total |
+------+------+------+-------+
| 1 | 10 | 20 | 30 |
+------+------+------+-------+
1 row in set (0.00 sec)
通常,尽管您不应该存储可以计算的项目。另请注意ifnull测试。您的问题并不在于所有主题是否都有价值,因此您应该对合计和取平均值的可能性进行编码。