2014-12-01 53 views
-4

我有以下SQL:MSSQL誤差#120

INSERT INTO [dbo].[table1] 
    ([col1],[col2],[col3],...[col14]) 
SELECT * FROM [dbo].Table2 
GO 

運行它拋出MSSQL ERR#120,這意味着列數排隊的INSERT。 table2有5列,table1有14個。假設這是錯誤的原因,我會正確嗎?我問的原因是a)不熟悉MSSQL和b)我不熟悉他們的數據庫。

+1

的MySQL或MS SQL? – 2014-12-01 21:57:28

+0

它是MSSQL,我正在Microsoft SQL Server Management Studio中查看。 – visevo 2014-12-01 21:58:17

+0

THey必須具有相同數量的列'INSERT INTO t1(col1,col2,col3,col4,col5)SELECT * FROM t2'其中t2有5列 – Mihai 2014-12-01 21:59:16

回答

4

是的,這是你錯誤的原因。

您將有:

INSERT INTO [dbo].[table1] 
    ([col1],[col2],[col3],...[col14]) 
SELECT 
    col1, col2, col3, col4, col5, --your table's columns 
    'const1', null, 1, etc... --other values that you want for the other columns, 
FROM [dbo].Table2    --defaults, constants, null, etc. 

GO 

INSERT INTO [dbo].[table1] 
    ([col1],[col2],[col3],[col4],[col5]) --the rest will have their default value. 
SELECT 
    col1, col2, col3, col4, col5 
FROM [dbo].Table2 
GO 
+0

謝謝你的確認。 – visevo 2014-12-01 22:07:17