Access报错‘JOIN expression not supported’:查询无法执行原因排查
Access查询报错‘JOIN expression not supported’的解决方法
你的查询触发报错的核心原因是:Access SQL不允许在JOIN ON子句中使用包含OR的复合连接条件,你第二个LEFT JOIN里的AGi.ID IS NULL OR AGi.AgeGroupLowerLimit > NCR.Age直接违反了这个语法限制。
重构方案:预先计算年龄组上限
通过子查询先算出每个年龄组的上限(即下一个年龄组的下限值),把原来的OR条件转换成简单的范围比较,就能绕过Access的JOIN限制。修改后的查询如下:
SELECT NCR.Stage , AG.ID AS AgeGroup , Count(*) AS AgeGroupCount FROM ( -- 预先计算每个年龄组的上限(下一个组的下限) SELECT AG.ID, AG.AgeGroupLowerLimit, (SELECT MIN(AgeGroupLowerLimit) FROM qry1 WHERE ID > AG.ID) AS AgeGroupUpperLimit FROM qry1 AG ) AS AG LEFT JOIN qry2 AS NCR ON NCR.Age >= AG.AgeGroupLowerLimit AND (AG.AgeGroupUpperLimit IS NULL OR NCR.Age < AG.AgeGroupUpperLimit) GROUP BY NCR.Stage , AG.ID;
额外修正说明
原查询的GROUP BY NCR.AgeGroup是逻辑错误——你SELECT语句中并没有这个字段,实际应该按AG.ID(也就是你别名的AgeGroup)分组,否则会出现分组匹配异常。
内容的提问来源于stack exchange,提问作者davidfjdkslfs
相关产品推荐
相关产品推荐

