![](/img/trans.png)
[英]How to INSERT a reference to UUID from another table in PostgreSQL?
[英]PostgreSQL: insert from another table
我正在尝试将数据从另一个表插入到一个表中,并且这些表只有一列是共同的。 问题是,TABLE1 的列不接受空值,因此我不能将它们留空,也无法从 TABLE2 中获取它们。
我有 TABLE1: id, col_1 (not null), col_2(not null), col_3 (not null)
和表2:id、col_a、col_b、col_c
那么我如何将 id 从 TABLE2 插入到 TABLE1 并用硬编码字符串填充 col_1-3 ,如“data1”、“data2”、“data3”?
INSERT INTO TABLE1 (id) SELECT id FROM TABLE2 WHERE col_a = "something";
将导致:
错误:“col_1”列中的空值违反了非空约束
只需在 SELECT 中提供文字值:
INSERT INTO TABLE1 (id, col_1, col_2, col_3)
SELECT id, 'data1', 'data2', 'data3'
FROM TABLE2
WHERE col_a = 'something';
选择列表可以包含任何值表达式:
但是选择列表中的表达式不必引用FROM 子句的表表达式中的任何列; 例如,它们可以是常量算术表达式。
字符串文字当然是一个值表达式。
对于引用完整性:
insert into main_tbl (col1, ref1, ref2, createdby)
values ('col1_val',
(select ref1 from ref1_tbl where lookup_val = 'lookup1'),
(select ref2 from ref2_tbl where lookup_val = 'lookup2'),
'init-load'
);
您可以使用合并:
insert into destination select coalesce(field1,'somedata'),... from source;
很晚的答案,但我认为我的答案对于用户想要简单地将数据从表 A 插入(复制)到表 B 的特定用例更直接:
INSERT INTO table_b (col1, col2, col3, col4, col5, col6)
SELECT col1, 'str_val', int_val, col4, col5, col6
FROM table_a
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.