根据条件从另一个表插入数据,如果没有插入特定值PSQL

时间:2014-04-10 00:07:55

标签: sql psql

我的表A有一个id列和一堆其他的。我还有表B,它有一个像表A一样的id列,还有一个名为countries的列。但是,并非表A中的所有id都在表B中。我想在表A中插入一个名为countries2的新列,它基本上插入表B中对应于两个表中的ID的国家/地区。如果B中不存在来自A的特定id,则它总是放入VARCHAR' none'进入国家2。 因此,例如,如果表A具有ID 1,2,3,4,则表B看起来像:
ID - 国家
1 ---' foo1'
3 ---' foo2的'

我希望表A变成这样的东西:
id - country2 - 表A中的其他原始数据 1 ---' foo1' --...
2 ---'无' --...
3 ---' foo2的' --...
4 ---'无' --...

1 个答案:

答案 0 :(得分:1)

您需要先修改TableA,以添加varchar / varchar2类型的额外列(即yourNewColumn)

添加列尝试类似

ALTER TABLE TableA ADD COLUMN yourNewColumn varchar(10);

然后您可以使用类似下面的内容来更新TableA

UPDATE TableA
SET yourNewColumn = ISNULL(TableB.countries, 'none')
FROM TableA
LEFT JOIN TableB ON TableA.id = TableB.id

PostgreSQL中的ISNULL函数可能类似于

SET yourNewColumn = CASE WHEN TableB.countries IS NULL THEN 'none' ELSE TableB.countries END