两个单独运行正常的SELECT查询执行INNER JOIN报错求助
报错常见原因
- 字段歧义:两个表同时存在
index、date同名字段,直接写SELECT *时数据库无法判断字段归属,触发报错 - 缺少关联条件:INNER JOIN必须指定关联的匹配规则,无ON条件的JOIN在绝大多数SQL引擎中都会被拦截
- 大小写不匹配:部分数据库对表名大小写敏感,需确认
MONTHLY_FX的实际拼写和数据库中一致
正确关联语句示例
以两个表共有的date字段为关联键,给表增加别名避免字段冲突:
SELECT fp.date, fp.cropType, fp.GEO, fp.pricePerMT, fx.FXUSDCAD, fp.index AS farm_price_index, fx.index AS fx_index FROM `ibm-project-326221.IBM_project.MONTHLY_FX` fx INNER JOIN `ibm-project-326221.IBM_project.farm_prices` fp ON fx.date = fp.date WHERE fx.date >= '2020-07-01' AND fp.cropType = 'Canola' AND fp.GEO = 'Saskatchewan'
补充说明
如果你的业务场景允许某一侧表无匹配数据时也返回结果,可以将INNER JOIN替换为LEFT JOIN或者RIGHT JOIN。如果执行后仍报错,可优先排查两个表date字段的格式是否一致,是否存在脏数据。
内容的提问来源于stack exchange,提问作者Naysa Pearl Anderson
相关产品推荐
相关产品推荐

