2017-05-26 28 views
0

我正在使用SQL Server 2012嘗試獲取表中一列的值,並將它們置於另一列中的另一列值中。如果我嘗試運行下面的查詢:SQL Server:INSERT INTO SELECT未插入到正確的列中

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 ......它只是一個語法的事情,列的順序必須匹配?

回答

2

插入column1。請記住,您要插入整個值爲的行,所以您應該對所有列確實有一個值。您的查詢等效於:

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

(等爲表中的所有列。)

我猜你需要的是一個update,但你的問題並沒有提供足夠的信息來進一步指導。

+0

啊,是的,'更新'可能是我應該做的。謝謝,雖然這不是直接的答案,但它幫助我走向了我需要去的地方! – Tyler