首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PostgreSQL:从另一个表插入

PostgreSQL:从另一个表插入
EN

Stack Overflow用户
提问于 2011-08-01 20:38:13
回答 4查看 166.9K关注 0票数 141

我试图将数据从另一个表插入到另一个表中,但这些表只有一列是相同的。问题是,TABLE1包含不接受null值的列,所以我不能将它们留空,也不能从TABLE2获取它们。

我有TABLE1: id、col_1 (非null)、col_2(非null)、col_3 (not null)

和TABLE2: id,col_a,col_b,col_c

那么我如何将id从TABLE2插入到TABLE1中,并用硬编码字符串填充col1-3,比如"data1","data2","data3"?

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

将导致:

错误:列"col_1“中的空值违反了非空约束

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-01 21:02:45

您可以在SELECT中提供文字值:

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

选择列表可以包含any value expression

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

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

票数 263
EN

Stack Overflow用户

发布于 2020-05-06 02:43:58

对于引用完整性:

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'
       );
票数 7
EN

Stack Overflow用户

发布于 2019-07-02 05:10:51

非常晚的答案,但我认为我的答案对于用户想要简单地将表A中的数据插入(复制)到表B中的特定用例更直接:

INSERT INTO table_b (col1, col2, col3, col4, col5, col6)
SELECT col1, 'str_val', int_val, col4, col5, col6
FROM table_a
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6898520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档