ODBC Excel驱动三表LEFT JOIN查询报42000缺少运算符错误
报错产生原因
Excel ODBC驱动遵循Jet SQL语法规范,该语法不支持3张及以上表的链式LEFT JOIN直接编写。当关联表数量超过2张时,SQL解析器无法识别连续拼接的JOIN逻辑,会判定首个ON子句与后续JOIN关键字之间缺少语法要求的包裹运算符,最终抛出42000语法错误。仅关联2张工作表时不存在链式JOIN的解析问题,因此查询可以正常执行。
修复方法
按照Jet SQL的多表关联规则,使用括号将前序完成的JOIN逻辑整体包裹,作为关联左表再和下一张表做关联即可。
修正后的查询语句拼接代码如下:
"select [Sheet1$]." + CompanyCode_ColName + ", [Sheet1$]." + CompanyName_ColName + ", [Sheet1$]." + GLAccountNumber_ColName + ", [Sheet1$]." + GLAccountName_ColName + ", [Sheet1$].EndingBalance1, [Sheet2$].EndingBalance2,[Sheet3$].EndingBalance3 " + "from ([Sheet1$] left join [Sheet2$] " + "on [Sheet1$]." + GLAccountNumber_ColName + " = [Sheet2$]." + GLAccountNumber_ColName + ") left join [Sheet3$] " + "on [Sheet3$]." + GLAccountNumber_ColName + " = [Sheet1$]." + GLAccountNumber_ColName
如果后续需要关联更多工作表,每新增一层JOIN对应增加一层嵌套括号即可,例如4张表关联的FROM子句结构为:from (([Sheet1$] join [Sheet2$] on 关联条件) join [Sheet3$] on 关联条件) join [Sheet4$] on 关联条件
内容的提问来源于stack exchange,提问作者Ahmed Alshubaky
相关产品推荐
相关产品推荐

