我试图将数据从另一个表插入到另一个表中,但这些表只有一列是相同的。问题是,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“中的空值违反了非空约束
发布于 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子句的表表达式中的任何列;例如,它们可以是常量算术表达式。
字符串字面量当然是一个值表达式。
发布于 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'
);
发布于 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
https://stackoverflow.com/questions/6898520
复制相似问题