我正在尝试将数据从另一个表插入到一个表中,并且这些表只有一个共同的列。问题在于,TABLE1的列不接受空值,因此我不能将它们留空,也无法从TABLE2中获取它们。
我有TABLE1:id,col_1(不为null),col_2(不为null),col_3(不为null)
和TABLE2:id,col_a,col_b,col_c
那么如何将ID从TABLE2插入TABLE1并用诸如“ data1”,“ data2”,“ data3”之类的硬编码字符串填充col_1-3?
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子句的表表达式中的任何列。例如,它们可以是常量算术表达式。
字符串文字肯定是一个值表达式。