问题是:如何基于现有列在Postgres SQL中创建新列。
解决方法是创建唯一的行标识符并使用行标识符创建并行表,计算所需的更新,然后使用基于唯一行标识符的更新替换row_3
。这是手动的,效率不高。
假设表结构为:
create table tab (
row_1 integer
, row_2 integer
, row_3 integer);
假设该表有1000个条目,row_1
和row_2
具有合法值。
问题是:如何更新row_3
以反映整个表格的row_1
和row_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之后添加它。