2012-01-11 107 views
1

我尝试在Microsoft Access 2010中运行以下SQL查询,并且出现错误(INSERT INTO语句中出现语法错误),然后突出显示该字段如果我将该字段重命名为“Level1”,它将起作用。问题是我不能重命名字段,因为我在PHP中有几个SQL查询,我依赖字段名称“Level”任何有关它为什么会抛出错误的想法。Microsoft Access不喜欢SQL查询中的表字段名称

我运行查询的原因是使用链接表从外部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 

回答

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

+0

是的这是它感谢 – punkdis 2012-01-11 01:34:24

2

你只需要围绕[等级](这是一个保留字显然)与支架。

+1

因为“级”是一个ODBC保留关键字 – 2012-01-11 00:42:27