插入到将所有其他列设置为null的select语句中

时间:2018-10-01 16:34:31

标签: sql select insert db2 dashdb

我正在尝试将此插入语句插入select语句:

insert into xyz (select t1.column1, t1.column2 from table1 t1, table2 t2 
where t1.column1 = t2.column1)

但是出现错误:“分配的值数量与指定或隐含的列或变量的数量不同”

我想将所有其他列设置为null(例如t1.column3至t1.column50)。

有没有一种方法可以不必在select语句中显式列出所有列?

insert into xyz (select  t1.column1, t1.column2, null as column3, null as column4, null as 
column5... from table1 t1, table2 t2 
where t1.column1 = t2.column1)

1 个答案:

答案 0 :(得分:2)

您可以在插入列表中列出各列。例如

insert into xyz ( column1, column2 )
select t1.column1, t1.column2
from table1 t1
,    table2 t2 
where t1.column1 = t2.column1

例如,

create table xyz( column1 int not null, column2 int not null, column3 int);
create table table1( column1 int not null, column2 int not null);
create table table2( column1 int not null);
insert into table1 values (1,2),(2,3);
insert into table2 values (1),(2);
select * from xyz;

给予

 COLUMN1 COLUMN2 COLUMN3
 ------- ------- -------
       1       2    NULL
       2       3    NULL