PostgreSQL:从另一个表中插入

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

我试图从另一个表中将数据插入到一个表中,而这些表只有一个共同的列。问题是,表1中的列不接受空值,因此不能将它们保持为空,也不能从表2中获取它们。

我有表1:ID_1(不为空)_2(不为空)_3(不为零)

表2:ID_阿,科尔_B,二醇_丙

那么,我如何将id从表2插入到表1并填充_有硬编码字符串的1-3,如“data 1”、“data 2”、“data 3”?

INSERT INTO TABLE1 (id) SELECT id FROM TABLE2 WHERE col_a = "something";

将导致:

错误:“coll”列中的空值_1“违反非空约束。

提问于
用户回答回答于

只需在SELECT中提供文字值:

INSERT INTO TABLE1 (id, col_1, col_2, col_3)
SELECT id, 'data1', 'data2', 'data3'
FROM TABLE2
WHERE col_a = 'something';

选择列表可以包含任何值表达式:

但是SELECT列表中的表达式不必引用FROM子句表表达式中的任何列;例如,它们可以是常量算术表达式。

字符串文字当然是一个值表达式。

用户回答回答于

insert into destination select coalesce(field1,'somedata'),... from source;

扫码关注云+社区