SQL Server:从一个表插入到另一个表

Mah*_*h Y 2 sql sql-server sql-insert

我面临着将数据从一个表插入到另一个表的问题,表结构相同,但列位置不同。

例子:

表格1:

     emp1:
          Name    char 50
          Age     int
          Salary  Float
Run Code Online (Sandbox Code Playgroud)

表 2:

     emp2:
          Name    char 50
          Salary  Float 
          Age     int
Run Code Online (Sandbox Code Playgroud)

我的代码:

insert into emp1
select * from emp2
Run Code Online (Sandbox Code Playgroud)

我无法插入,因为一个表与另一个表的列顺序不同,但是,两个表具有相同的名称和数据类型。

Sou*_*Xin 5

你可以(或提及@marc_s)指定列。

这样做您可以更改这些表的结构(可能发生,对吗?)而不会产生任何后果(除非您删除这些列)。您的代码仍然有效。

此外,指定列名称对任何人来说都更具可读性。您不需要调用sp_help或任何其他命令来检查结构(表架构)。

顺便说一句,如果不仅指定查找的列,则在两个表或任何表中都有主键将引发异常:

如果 INSERT 语句违反约束或规则,或者它的值与列的数据类型不兼容,则语句失败并返回错误消息。

如果 INSERT 正在使用 SELECT 或 EXECUTE 加载多行,则加载的值发生的任何违反规则或约束的行为都会导致语句停止,并且不会加载任何行。

    INSERT INTO emp1 (Name
        ,Age 
        ,Salary )
    SELECT Name
        ,Age 
        ,Salary
    FROM emp2
Run Code Online (Sandbox Code Playgroud)