2014-12-01 36 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