根据条件插入另一个表中的数据,如果不是,则插入特定值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看起来像:根据条件插入另一个表中的数据,如果不是,则插入特定值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——国家(地区)
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完成这项工作吗?