创建从当前列派生的新列

时间:2015-07-24 20:34:12

标签: sql postgresql

问题是:如何基于现有列在Postgres SQL中创建新列。

解决方法是创建唯一的行标识符并使​​用行标识符创建并行表,计算所需的更新,然后使用基于唯一行标识符的更新替换row_3。这是手动的,效率不高。

假设表结构为:

create table tab (
  row_1 integer
, row_2 integer
, row_3 integer);

假设该表有1000个条目,row_1row_2具有合法值。

问题是:如何更新row_3以反映整个表格的row_1row_2的总和。这适用于任意表格。

2 个答案:

答案 0 :(得分:2)

如果你想要"新"列是最新的,然后我建议使用视图:

create view v_tab as
    select tab.*, (col1 + col2) as col3
    from tabl;

(当列被称为&#34时,我会遇到认知失调;行"。;)

这将在查询表时进行计算,因此结果始终一致。

如果您只想对值进行一次性更改,请使用update

答案 1 :(得分:0)

ALTER TABLE tab ADD COLUMN row_3 INTEGER;

UPDATE tab SET row_3 = row_1+row_2;

如果你想在列'row_3'上有一个'NOT NULL'约束,那么在UPDATE之后添加它。