【问题标题】:Insert into select statement that sets all other columns to null插入将所有其他列设置为空的选择语句
【发布时间】:2019-03-06 19:28:14
【问题描述】:

我正在尝试将此插入运行到 select 语句中:

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

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

我想将所有其他列设置为空(例如 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)

【问题讨论】:

    标签: sql select insert db2 dashdb


    【解决方案1】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多