根据条件插入另一个表中的数据,如果不是,则插入特定值PSQL

根据条件插入另一个表中的数据,如果不是,则插入特定值PSQL,sql,psql,Sql,Psql,我有一个带有id列的表A和其他一些表。我还有表B,它有一个像表A一样的id列,还有另一个名为countries的列。然而,并非表A中的所有id都在表B中。我想在表A中插入一个名为countries2的新列,该列基本上插入表B中与两个表中id对应的国家。如果来自a的特定id在B中不存在,那么它总是将VARCHAR'none'放入countries2中。 例如,如果表A具有ID 1、2、3、4,而表B看起来像: id——国家(地区) 1---“foo1” 3---“foo2” 我希望表A类似于: i

我有一个带有id列的表A和其他一些表。我还有表B,它有一个像表A一样的id列,还有另一个名为countries的列。然而,并非表A中的所有id都在表B中。我想在表A中插入一个名为countries2的新列,该列基本上插入表B中与两个表中id对应的国家。如果来自a的特定id在B中不存在,那么它总是将VARCHAR'none'放入countries2中。 例如,如果表A具有ID 1、2、3、4,而表B看起来像:
id——国家(地区)
1---“foo1”
3---“foo2”

我希望表A类似于:
id--country2--表A中的其他原始数据
1--“foo1”--…
2——‘无’——…
3---“foo2”--…

4--'none'--…

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

要添加列,请尝试以下操作

ALTER TABLE TableA ADD COLUMN yourNewColumn varchar(10);
SET yourNewColumn = CASE WHEN TableB.countries IS NULL THEN 'none' ELSE TableB.countries END
然后您可以使用下面的内容来更新TableA

UPDATE TableA
SET yourNewColumn = ISNULL(TableB.countries, 'none')
FROM TableA
LEFT JOIN TableB ON TableA.id = TableB.id
PostgreSQL中的ISNULL函数可能类似于

ALTER TABLE TableA ADD COLUMN yourNewColumn varchar(10);
SET yourNewColumn = CASE WHEN TableB.countries IS NULL THEN 'none' ELSE TableB.countries END

你的问题很令人困惑。。。该死这不是一个令人困惑的问题,但答案可能不是非常直截了当。。。您想完全用SQL完成这项工作吗?