【问题标题】:Append table to an existing one: SQL Server将表附加到现有表:SQL Server
【发布时间】:2014-04-26 21:46:08
【问题描述】:

我有一个表A 有两列我想附加到另一个表B,我该怎么做?它们具有完全相同的行。软件是SQL Server 2012

编辑(注释中的尝试代码):

INSERT INTO B_table([Column 0], [Column 1])
    SELECT [Column 0], [Column 1]
    FROM [dbo].[A] ;

【问题讨论】:

  • 到目前为止你尝试过的事情是什么???
  • INSERT INTO B_table([Column 0], [Column 1]) SELECT [Column 0], [Column 1] FROM [dbo].[A] 我也尝试用空列创建表,但是当我放入数据时,它会创建更多行,而不是插入 NULL 列
  • 已回答,应该可以,更多详情请参见链接。
  • @npereira 。 . .那有什么问题?

标签: sql sql-server sql-server-2012


【解决方案1】:

基本形式是:

insert into tableB(col1, col2)
    select col1, col2
    from tableA;

例如,如果您对列有唯一约束并且 insert 违反了此约束,这可能不起作用。

这假设您确实想要将行添加到表中。如果你只是想一起看结果:

select col1, col2 from tableB union all
select col1, col2 from tableA;

编辑:

目标似乎是添加第一列tableB。您可以通过添加列然后更新值来做到这一点:

alter table tableB add col1 . . . ;
alter table tableB add col2 . . . ;

. . . 是列的定义。

然后做:

update b
    set col1 = a.col1, col2 = b.col2
    from tableb b join
         tablea a
         on b.joinkey = a.joinkey;

如果您没有加入的专栏,那么您就有问题了。 SQL 中的表本质上是无序的,因此无法将 A 的特定行中的值分配给 B 的特定行。

【讨论】:

    【解决方案2】:

    试试这个:

    INSERT INTO tbl1 SELECT * FROM tbl2;
    

    【讨论】:

    • 这假定列是相同的。 (我刚刚在您的评论中看到列数不同。)
    【解决方案3】:

    方法一:

    INSERT INTO TestTable (FirstName, LastName)
    SELECT FirstName, LastName
    FROM OtherTable
    

    方法二:

    SELECT FirstName, LastName
    INTO TestTable
    FROM OtherTable
    

    Source.

    【讨论】:

      【解决方案4】:

      如果新表还不存在,你必须先创建它,或者使用表格:

      Select [Column list] Into [NewTableName] From [oldTableName],

      Select col1, col2
      Into NewTable
      From OldTable
      

      【讨论】:

        猜你喜欢
        • 2018-07-13
        • 2020-06-23
        • 1970-01-01
        • 1970-01-01
        • 2017-08-03
        • 2020-07-28
        • 2011-05-05
        • 2017-04-19
        相关资源
        最近更新 更多