【问题标题】:Is it possible to copy all data from one table to another table, plus an extra column?是否可以将所有数据从一个表复制到另一个表,再加上一列?
【发布时间】:2012-10-26 15:07:44
【问题描述】:

我有两张略有不同的表。表 A 有 4 列,表 B 只有 3 列。我想将表 B 中的所有数据复制到表 A 中,但我还想为每一行填充值 1 的额外列。

如果没有额外的列,这将起作用:

insert into TABLEA (COL1, COL2, COL3) select COL1, COL2, COL3 from TABLEB;

不幸的是,表 A 中的额外列不可为空,所以我不能在之后运行更新。

感谢您的帮助!

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    指定列并使用常量作为值(注意您可以在选择子句中混合使用常量和列引用)。在这种情况下,我们指定每一行都将获得 1 列的常量 COL4

    insert into TABLEA (COL1, COL2, COL3, COL4)
    select COL1, COL2, COL3, 1
    from TABLEB;
    

    【讨论】:

    • 不错的答案,但没有语法解释? “选择”部分是做什么的o_O...第一次看到这个的人会有一些问题...
    【解决方案2】:
    insert into TABLEA (COL1, COL2, COL3, extra) 
    select COL1, COL2, COL3, 1 
    from TABLEB;
    

    【讨论】:

      【解决方案3】:

      你试过了吗?

      insert into TABLEA (COL1, COL2, COL3, COL4) select COL1, COL2, COL3, 'Whatever' as COL4 from TABLEB;
      

      在我的电脑上工作:-)

      【讨论】:

        【解决方案4】:
        INSERT INTO tableA SELECT a.*,<VALUE FOR THE EXTRA COLUMN> FROM tableB a
        

        例如,如果tableA 中的额外列是sys_creation_date 那么

        INSERT INTO tableA SELECT a.*,sysdate FROM tableB a
        

        INSERT INTO tableA SELECT a.*,'10-Jan-2013' FROM tableB a
        

        【讨论】:

          【解决方案5】:

          您可以从TableB中选择一个常量

          INSERT INTO tableA( col1, col2, col3, col4 )
            SELECT col1, col2, col3, 1 col4
              FROM tableA
          

          【讨论】:

            猜你喜欢
            • 2020-11-03
            • 2015-06-07
            • 1970-01-01
            • 2018-06-19
            • 2017-03-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-05
            相关资源
            最近更新 更多