SQL中如何新增第三列并存储前两列的求和结果?
根本原因
SELECT 属于只读查询语句,仅返回计算后的临时结果集,不会修改源表的结构或存储的持久化数据,因此关闭SSMS后临时计算结果会直接消失,不会写入原表。
方案1:添加永久自动计算列(推荐)
如果需要col3永久存在于原表,且col1/col2更新时col3自动同步计算结果,可直接为表添加持久化计算列,执行以下命令:
ALTER TABLE table_name ADD col3 AS (col1 + col2) PERSISTED;
补充说明:
- 加
PERSISTED关键字会将计算结果物理存储到表中,查询时不需要重复计算,性能更高。如果不加的话计算列仅在查询时实时计算,不占用额外存储空间。 - 后续所有对
col1、col2的增改操作,col3都会自动更新,无需手动维护。
方案2:批量写入已有空列
如果你的表已经提前创建了col3字段,仅需要批量计算并填充该列的现有数据,执行UPDATE语句即可:
UPDATE table_name SET col3 = col1 + col2;
执行后计算结果会直接写入现有col3列,持久化存储。
方案3:将计算结果保存为独立新表
如果不需要修改原表,只想把包含col3的完整查询结果存为新的物理表,使用SELECT ... INTO语法:
SELECT col1, col2, col1+col2 AS col3 INTO new_table_name FROM table_name;
执行后会自动生成名为new_table_name的新表,存储三列的全量数据。
内容的提问来源于stack exchange,提问作者Maggie H
相关产品推荐
相关产品推荐

