我正在尝试向表中添加一个名为summary的新列,它得到的值将是来自同一个表(summary)的第1列-第2列的计算,这是表格:表格摘要idtargetsales******1014公司这是我写的-
ALTER TABLE Summary ADD difference int; Insert into (difference) Value (SELECT target – Sales FROM Summary);
这是一个有效的查询吗?如果不是,如何更正确地编写它?谢谢!
agxfikkp1#
向该表中添加计算列:
alter table summary add diff as target – Sales
这将是不劳而获的。请注意,这是动态计算的,每次执行都有成本
ijnw1ujt2#
您试图实现的逻辑似乎是 update :
update
ALTER TABLE Summary ADD difference int; UPDATE Summary SET difference = (target – Sales);
请注意,这只适用于表中已有的数据。价值 difference 在新行或数据更改已过期的行中—除非插入正确的值或进行进一步更新。大多数数据库支持生成的列。这是一个极大的方便--并且确保在查询值时该值总是同步的。典型的语法是:
difference
alter table summary add difference int generated always as (target - Sales);
如前所述,该值是在查询表时计算的(这会增加非常小的开销)。大多数数据库还可以持久化生成的列,因此数据库实际上存储了值,但同时也使其保持最新。
2条答案
按热度按时间agxfikkp1#
向该表中添加计算列:
这将是不劳而获的。
请注意,这是动态计算的,每次执行都有成本
ijnw1ujt2#
您试图实现的逻辑似乎是
update
:请注意,这只适用于表中已有的数据。价值
difference
在新行或数据更改已过期的行中—除非插入正确的值或进行进一步更新。大多数数据库支持生成的列。这是一个极大的方便--并且确保在查询值时该值总是同步的。典型的语法是:
如前所述,该值是在查询表时计算的(这会增加非常小的开销)。大多数数据库还可以持久化生成的列,因此数据库实际上存储了值,但同时也使其保持最新。