Microsoft Access不喜欢SQL查询中的表字段名称

时间:2012-01-11 00:38:37

标签: sql ms-access

我有以下SQL查询,我试图在Microsoft Access 2010中运行,我得到一个错误(INSERT INTO语句中的语法错误)然后它突出显示字段“级别”如果我将字段重命名为“Level1”它作品。问题是我无法重命名该字段,因为我在PHP中有几个SQL查询,我依赖于字段名称“Level”任何关于它为什么会抛出错误的想法。

我运行查询的原因是使用链接表从外部ODBC sqlite数据库复制数据。我确实有其他几个INSERT INTO查询以这种方式工作。如果有其他方式,请告诉我。我在一些VB代码中查询了我使用的DoCmd.RunSQL

INSERT INTO MinorStats1 ( PlayerID,YearNumber,TeamID,Level,B_PA,B_AB,B_Hits,B_Doubles,B_Triples,B_HR,B_RBI,B_BB,B_K,B_TB,B_AVG,B_SLG,B_OPS,B_OBP,B_FPCT,B_SB,B_CS,P_Wins,P_Losses,P_Saves,P_GS,P_OutsPitched,P_BF,P_Hits,P_HR,P_BB,P_K,P_ER,P_ERA)SELECT PlayerID,YearNumber,TeamID,Level,B_PA,B_AB,B_Hits,B_Doubles,B_Triples,B_HR,B_RBI,B_BB,B_K,B_TB,B_AVG,B_SLG,B_OPS,B_OBP,B_FPCT,B_SB,B_CS,P_Wins,P_Losses,P_Saves,P_GS,P_OutsPitched,P_BF,P_Hits,P_HR,P_BB,P_K,P_ER,P_ERA FROM MinorStats

2 个答案:

答案 0 :(得分:3)

level括在方括号中,如下所示:

INSERT INTO MinorStats1 ( PlayerID,YearNumber,TeamID,[Level],B_PA,B_AB,B_Hits,B_Doubles,B_Triples,B_HR,B_RBI,B_BB,B_K,B_TB,B_AVG,B_SLG,B_OPS,B_OBP,B_FPCT,B_SB,B_CS,P_Wins,P_Losses,P_Saves,P_GS,P_OutsPitched,P_BF,P_Hits,P_HR,P_BB,P_K,P_ER,P_ERA)SELECT PlayerID,YearNumber,TeamID,[Level],B_PA,B_AB,B_Hits,B_Doubles,B_Triples,B_HR,B_RBI,B_BB,B_K,B_TB,B_AVG,B_SLG,B_OPS,B_OBP,B_FPCT,B_SB,B_CS,P_Wins,P_Losses,P_Saves,P_GS,P_OutsPitched,P_BF,P_Hits,P_HR,P_BB,P_K,P_ER,P_ERA FROM MinorStats

您需要这样做,因为level是Access中的保留字。有关保留字的完整列表,请参阅http://support.microsoft.com/kb/286335

答案 1 :(得分:2)

你需要用括号括起[Level](显然是一个保留字)。