2017-05-26 21 views
0

SQL Server 2012を使用してテーブルの1つの列の値を取得し、別の列のテーブルの値に入れようとしています。私は次のクエリを実行しようとした場合:table2についてはSQL Server:INSERT INTO SELECTが正しい列に挿入されない

INSERT INTO table2 (column3) 
    SELECT column3 
    FROM table1 
    WHERE (ScopeID IS NOT NULL) 
    ORDER BY Name 

column3は、同じタイプ(int)で、NULL値が許可されています。しかし、クエリを実行しようとすると、次の結果が返されます。

カラム 'column1'、テーブル 'dbo.table2';に値NULLを挿入できません。カラムはNULLを許可しません。 INSERTは失敗します。

しかし、私はcolumn1に挿入しようとしていません...列の順序が一致しなければならない文法ですか?

答えて

2

は、column1に挿入するです。覚えておいては、行の値をすべてとしているので、実際にはすべての列の値を設定する必要があります。 (表のすべての列のためなど):あなたのクエリは同等です

INSERT INTO table2 (column1, column2, column3) 
    SELECT NULL, NULL, column3 
    FROM table1 
    WHERE (ScopeID IS NOT NULL) 
    ORDER BY Name; 

私はあなたが実際にupdateをしたいことを推測していますが、あなたの質問はに十分な情報を提供していません。さらなる指針を与える。

+0

ああ、はい、 'update'はおそらく私がやったはずのものです。ありがとう、これは私が行く必要がある方向に私を導くのを助けた直接の答えではありませんが! – Tyler

関連する問題