sql—添加一个新列,该列的值将是来自同一表的计算

fsi0uk1n  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(211)

我正在尝试向表中添加一个名为summary的新列,它得到的值将是来自同一个表(summary)的第1列-第2列的计算,
这是表格:
表格摘要
idtargetsales******1014公司
这是我写的-

ALTER TABLE Summary
ADD difference int;
Insert into (difference)
Value (SELECT target – Sales FROM Summary);

这是一个有效的查询吗?如果不是,如何更正确地编写它?谢谢!

agxfikkp

agxfikkp1#

向该表中添加计算列:

alter table summary add diff as  target – Sales

这将是不劳而获的。
请注意,这是动态计算的,每次执行都有成本

ijnw1ujt

ijnw1ujt2#

您试图实现的逻辑似乎是 update :

ALTER TABLE Summary ADD difference int;

UPDATE Summary
    SET difference = (target – Sales);

请注意,这只适用于表中已有的数据。价值 difference 在新行或数据更改已过期的行中—除非插入正确的值或进行进一步更新。
大多数数据库支持生成的列。这是一个极大的方便--并且确保在查询值时该值总是同步的。典型的语法是:

alter table summary add difference int generated always as
     (target - Sales);

如前所述,该值是在查询表时计算的(这会增加非常小的开销)。大多数数据库还可以持久化生成的列,因此数据库实际上存储了值,但同时也使其保持最新。

相关问题