SQL中无公共列的两个查询如何拼接 Access执行报错解决方案
错误原因
- 核心问题是 Microsoft Access 本身不支持
FULL OUTER JOIN语法,Access的SQL方言仅支持INNER JOIN、LEFT JOIN、RIGHT JOIN三类连接操作,你使用了Access不识别的连接语法,因此触发FROM子句语法错误。 - 补充说明:即使是支持
FULL OUTER JOIN的SQL Server等数据库,ON 0=1的写法是专门用来实现两个结果集无关联拼接的效果,逻辑本身没问题,但受限于Access的语法支持无法运行。
解决方案
针对你的需求(两个无关联查询结果上下拼接、缺失字段留空),可以直接用Access支持的UNION ALL实现,给每个查询补全缺失的字段、用NULL占位即可:
SELECT Test1, Test2, NULL AS Test3, NULL AS Test4 FROM Query1 UNION ALL SELECT NULL AS Test1, NULL AS Test2, Test3, Test4 FROM Query2
说明:
UNION ALL会直接拼接两个查询的结果,不会额外去重,执行效率更高,完全符合你给出的预期输出效果。
内容的提问来源于stack exchange,提问作者Pangu
相关产品推荐
相关产品推荐

