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)
我无法插入,因为一个表与另一个表的列顺序不同,但是,两个表具有相同的名称和数据类型。
你可以(或提及@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)