SQL Server:INSERT INTO SELECT不会插入正确的列

时间:2017-05-26 16:01:05

标签: sql sql-server sql-server-2012

我正在使用SQL Server 2012尝试获取表中一列的值,并将它们放入另一列中另一列表的值中。如果我尝试运行以下查询:

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

对于table2column3属于同一类型(int),NULL值是允许的。但是当我尝试执行查询时,它会返回:

  

无法将值NULL插入列'column1',表'dbo.table2';,列不允许空值。 INSERT失败。

但我不是要插入column1 ...它只是一个语法的东西,列的顺序必须匹配?

1 个答案:

答案 0 :(得分:2)

插入column1。请记住,您要插入整个值,因此您应该为所有列提供一个值。您的查询等同于:

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

(等等表格中的所有列。)

我猜你确实想要一个update,但你的问题没有提供足够的信息来提供进一步的指导。