含子查询的INNER JOIN SQL语句报语法错误,请求排查修正
SQL语法错误排查与修正
错误原因
- JOIN子句位置违规:SQL要求所有
JOIN操作必须放在WHERE过滤条件之前,原语句在第一个WHERE后写INNER JOIN city,直接触发语法报错。 - 重复使用WHERE子句:单条SELECT语句仅允许一个
WHERE子句,原语句拆分写了两个,不符合语法规范。 - 关联字段错误:
c.city.city_id写法错误,customer表关联city表的外键应为c.city_id(假设customer表存储city的外键字段是city_id)。
修正后的SQL语句
SELECT c.first_name, c.last_name FROM customer c INNER JOIN payment p ON c.customer_id = p.customer_id INNER JOIN city ON c.city_id = city.city_id WHERE p.amount > (SELECT AVG(amount) FROM payment) AND city.city LIKE '%a%';
核心修正点
- 调整
INNER JOIN city的位置,移至第一个WHERE之前,遵循FROM → JOIN → WHERE的标准SQL语法顺序。 - 将两个过滤条件合并到同一个
WHERE子句中,用AND逻辑连接。 - 修正表关联字段为正确的
c.city_id = city.city_id,同时确保模糊匹配的字段为city表的城市名称字段(这里按原语句意图设为city.city,可根据实际表结构调整)。
内容的提问来源于stack exchange,提问作者Mason
相关产品推荐
相关产品推荐

