Вставить в оператор выбора, который устанавливает все остальные столбцы в нуль - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь выполнить эту вставку в операторе выбора:

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

Но получаю ошибку: «Количество назначенных значений не совпадает с числом указанных или подразумеваемых столбцов или переменных»

Я хочу установить для всех остальных столбцов значение NULL (например, от t1.column3 до t1.column50).

Есть ли способ сделать это без необходимости явного перечисления всех столбцов в списке выбора?заявление?

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 голосов
/ 01 октября 2018

Вы можете перечислить столбцы в списке вставок.Например,

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
...