insert语句中的SQL语法错误170
这是我的SQL语句,第4行的“,”附近出现了insert语句中的SQL语法错误170,sql,tsql,Sql,Tsql,这是我的SQL语句,第4行的“,”附近出现了Error 170错误语法 INSERT INTO SEO_Permalink_Test ( IDObjekt ,IDType ,IDLanguage ,StateSEOName ,StateSEOPermalink ,DatumErstellungSEOName ,DatumLetzteAenderungSEOName ,SEOName) VALUES ( 19988 , 72 , 1 , 0 , 0 , GETDATE() , GETDAT
Error 170错误语法
INSERT INTO SEO_Permalink_Test
( IDObjekt ,IDType ,IDLanguage ,StateSEOName ,StateSEOPermalink ,DatumErstellungSEOName ,DatumLetzteAenderungSEOName ,SEOName)
VALUES
( 19988 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_ST_004' ),
( 19989 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_FS_003' ) ,
( 19997 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CAU0171_WO_015' ) ,
( 19998 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_ST_003' ) ,
( 19999 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_FS_001' ) ,
( 20001 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_ILI0758_AU_007' ) ,
( 20002 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_ILI0758_PO_011' ) ,
( 20003 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_ILI0758_RS_008' ) ,
( 20004 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CIT0550_WO_002' ) ,
( 20005 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CIT0550_WO_003' ) ,
( 20006 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CIT0550_TR_001' ) ,
( 20007 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CIT0550_RS_001' ) ,
( 20008 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CSL0152_AU_001' )
在2008年之前,您无法在SQL Server中执行多行插入。
有两种方法可以做到这一点:
INSERT INTO SEO_Permalink_Test
( IDObjekt ,IDType ,IDLanguage ,StateSEOName ,StateSEOPermalink ,DatumErstellungSEOName ,DatumLetzteAenderungSEOName ,SEOName)
SELECT 19988 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_ST_004' UNION ALL
SELECT 19989 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_FS_003'
...
或
我会选择第1种方法,因为它不太冗长。只是语法问题:每个记录都需要一个单独的insert语句
另一种可能增加可读性的替代方法是按如下方式构造语句
INSERT INTO TableName(col1, col2, col3)
SELECT( a, b, c)
UNION SELECT( d, e, f)
UNION SELECT( g, h, i)
我猜是SQLServer2005或更低
发件人:
SQL Server 2008引入了Transact-SQL行构造函数(也称为表值构造函数)来指定表中的多行
单插入语句。行构造函数由单个
VALUES子句,多个值列表用括号括起来
用逗号分隔。有关详细信息,请参见表值
构造函数(Transact-SQL)。您的insert语句将在my SQL中进行无错误分析
INSERT INTO MyTable (FirstCol, SecondCol)
VALUES ('First',1),
('Second',2),
('Third',3),
('Fourth',4),
('Fifth',5)
您使用哪个版本的sql server?我复制了您的代码,它在SQL Server 2008中工作。您使用的是哪个版本的SQL Server?多个值
仅在2008年添加。有关更多详细信息,请参阅。为什么要重新发布您的问题?请在“UNION”中添加“ALL”关键字,以避免不必要的过度使用。实际上,这称为“行构造”,因为批量插入
是T-SQL中用于导入文件的显式命令,因此是一件完全不同的事情。我接受您的评论,但请注意,我使用的“批量插入”术语不是以特定方式或作为命令,我同意@RBarryYoung的说法,使用像bulk insert这样的术语,当它是同一产品不同功能的特定术语时,充其量只是误导。
INSERT INTO MyTable (FirstCol, SecondCol)
VALUES ('First',1),
('Second',2),
('Third',3),
('Fourth',4),
('Fifth',5)