2017-06-09 91 views
1

我面臨將數據從一個表插入另一個表,具有相同表結構但具有不同列位置的問題。SQL Server:從一個表插入到另一個表

實施例:

表1:

 emp1: 
      Name char 50 
      Age  int 
      Salary Float 

表2:

 emp2: 
      Name char 50 
      Salary Float 
      Age  int 

我的代碼:

insert into emp1 
select * from emp2 

我不能插入,因爲列順序是不同於一張桌子和另一張桌子呃,但是,兩個表都有相同的名稱和數據類型。

+1

您必須指定列 – SouXin

回答

0

測試此查詢,它應該工作:

insert into emp1 select Name, Age, Salary from emp2; 

,我建議你閱讀this教程。

3

你可以(或者@marc_s提到應該)指定列。這樣做,你可以改變這些表的結構(可能發生,對嗎?),沒有任何後果(除非你刪除這些列)。您的代碼仍在工作。

此外,指定列名稱對任何人來說都更具可讀性。您無需調用sp_help或任何其他命令來檢查結構(表格架構)。

BTW有兩個表或表中一個主鍵,如果不指定只有尋求的列會拋出異常:

如果INSERT語句違反了約束或規則,或者如果它有不兼容的值與列的數據類型一起,語句失敗並返回錯誤消息。

如果INSERT正在使用SELECT或EXECUTE加載多行,則任何違反從正在加載的值發生的規則或約束都會導致語句停止,並且不加載行。

INSERT INTO emp1 (Name 
     ,Age 
     ,Salary) 
    SELECT Name 
     ,Age 
     ,Salary 
    FROM emp2 
+0

*您可*,和最佳做法說你**應該這樣做!** –

+1

@marc_s。 =)這就是爲什麼我在評論中提到'**必須**' – SouXin

相關問題