例如,我有下表:
CREATE TABLE `test` (
`total_results` int(10) unsigned NOT NULL,
`num_results_as_expected` unsigned int(10) NOT NULL,
) ;
我想在不使用VIEW的情况下向表中添加另一列,以添加以下百分比:
(num_results_as_expected/total_results)*100
如果不使用VIEW,这可能吗?
澄清。我知道可以使用select statent,但是我想在CREATE TABLE语句中添加它,以便访问该表的任何人都可以使用该列。
澄清2:触发是正确的方法吗?这基本上会在列中存储重复信息。
答案 0 :(得分:4)
创建常规列+添加“插入前”触发器,该触发器将在每次插入操作时使用计算值更新其值。例:
create trigger update_result before insert on test for each row
begin set new.result = (num_results_as_expected/total_results)*100;
答案 1 :(得分:2)
select (num_results_as_expected/total_results)*100 as percentage from test
所以要获得包括新列的所有列:
select total results, num_results_as_expected, (num_results_as_expected/total_results)*100 as percentage from test
这可以防止您必须存储额外的内容,在获取数据时神奇地显示额外的列。