2017-06-09 15 views
1

あるテーブルから別のテーブルへのデータの挿入に関して、同じテーブル構造であるが列の位置が異なる問題があります。SQL Server:あるテーブルから別のテーブルへのINSERT

例:

表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つのテーブルと異なるテーブルしかし、どちらのテーブルも同じ名前とデータ型を持っています。

+1

あなたは – SouXin

答えて

0

テストこのクエリは、それが動作するはずです:

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

と私はあなたがthisチュートリアルを読むことをお勧めします。

3

あなたは(または記載されているように)とすることができます。

これらのテーブルの構造を変更することができます(これらのテーブルを削除する場合を除いて)。あなたのコードはまだ動作しています。

さらに、列名を指定すると、誰にでもわかりやすくなります。構造(テーブルスキーマ)を確認するためにsp_helpまたは他のコマンドを呼び出す必要はありません。

はところで求め列のみ指定しない場合は例外がスローされます両方のテーブルまたは任意のテーブルの主キーを持つ:INSERT文が制約やルールに違反した場合

を、またはそれは互換性のない値を持つ場合列のデータ型では、文は失敗し、エラーメッセージが返されます。

複数の行をSELECTまたはEXECUTEでロードすると、ロードされている値から発生するルールまたは制約に違反すると、ステートメントが停止し、ローがロードされません。

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

ます*缶*列を指定する必要があり、およびベストプラクティスは、あなたは常に**すべきだ!** –

+1

@marc_s。 =)それは、私が「** have to to **」とコメントした理由です – SouXin

関連する問題