You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL多表连接语法错误排查:根据目的地名称匹配价格列

解决Access SQL多表连接+SWITCH函数的语法错误

错误根源是Access的Jet/ACE SQL对多表JOIN的语法有特殊要求:当连接两个以上表时,必须用括号将第一个JOIN的结果与第三个表的连接逻辑包裹起来,否则会触发Syntax error - Missing operator错误。

修正后的查询语句

SELECT 
    tblGeneral.ID AS ID, 
    tblDestinations.DestinationName AS Destination, 
    tblPrices.OriginName AS Origin,
    SWITCH(
        tblDestinations.DestinationName = "Africa", tblPrices.Africa,
        tblDestinations.DestinationName = "Asia", tblPrices.Asia,
        tblDestinations.DestinationName = "China", tblPrices.China
    ) AS Price
FROM 
    (tblGeneral
INNER JOIN 
    tblDestinations ON tblGeneral.DestinationID = tblDestinations.DestinationID)
INNER JOIN 
    tblPrices ON tblGeneral.OriginID = tblPrices.OriginID;

关键说明

  1. 括号的作用:将tblGeneral与tblDestinations的连接结果用括号包裹,再与tblPrices执行连接,完全符合Access SQL的语法规范。
  2. SWITCH函数逻辑:原函数的匹配逻辑是正确的,只要tblDestinations.DestinationName的值与字符串严格匹配,就能正确映射到tblPrices的对应价格列。

额外适配提示

如果你的数据库是SQL Server、MySQL等其他系统,需要将Access专属的SWITCH替换为标准SQL的CASE WHEN:

CASE 
    WHEN tblDestinations.DestinationName = 'Africa' THEN tblPrices.Africa
    WHEN tblDestinations.DestinationName = 'Asia' THEN tblPrices.Asia
    WHEN tblDestinations.DestinationName = 'China' THEN tblPrices.China
END AS Price

内容的提问来源于stack exchange,提问作者RedKite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 15:15:00