2016-10-14 29 views
0

我有一个7k记录的PostgreSQL表。每个记录有3个唯一的ID和3个字段。儿童保育,shcools,医院。有所有整数字段。我想添加一个新列并计算每行的受体总数(学校,儿童保育,医院)。我想这应该是非常简单明了与添加在柱上,用一个选择做一个插入,但我没有得到我想要SQL将列添加在一起

alter table site add total integer; 

insert into site(total) select sum(schools+childcares+hospitals) as s from site; 

结果我也有试过一组由ID在插入select语句

回答

1

您正在寻找UpdateInsert

Update site 
set total = COALESCE(schools,0)+COALESCE(childcares,0)+COALESCE(hospitals,0) 

新增COALESCE处理NULL值。

例:

1 + 2 + NULL = NULL所以更换NULL0我用COALESCE

现在它将是1 + 2 + 0(NULL) = 3

+0

coalesce做什么? – ziggy

+0

@ziggy - 'Coalesce'将从列表中返回第一个'Not Null'值。我用'zero'替换NULL值。 –

+0

ahh gotcha很好,工作! – ziggy