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

SQLite查询报错:near « ) » : syntax error 求助

SQLite查询语法错误排查与修正

错误原因分析

  • CTE字段与GROUP BY不匹配:CTE valeur_par_ville 的SELECT子句包含 com_code,但GROUP BY子句使用的是 com_id,非聚合列必须出现在GROUP BY中,两者不统一导致逻辑错误。
  • 子查询引用不存在的字段:子查询尝试从CTE中获取 com_nom 和 valeur_fonciere,但CTE仅生成了 dep_code、com_id、valeur(平均房价)这三个字段——valeur_fonciere 是原始表字段,经AVG聚合后已不存在;com_nom 未在CTE中被选中。
  • 外层查询引用未暴露的字段:外层SELECT中的 com_id 未在子查询的SELECT列表中声明,导致无法访问该字段。

修正后的查询语句

WITH valeur_par_ville AS
(
SELECT dep_code, commune.com_id, com_nom, AVG(valeur_fonciere) as valeur
FROM vente
JOIN bien ON bien.bien_id = vente.bien_id
JOIN commune ON commune.com_id = bien.com_id
WHERE dep_code IN (6,13,33,59,69)
GROUP BY dep_code, commune.com_id, com_nom
)
SELECT dep_code AS "Département", com_nom AS "Commune", round(valeur,1) AS "Prix moyen"
FROM(
SELECT dep_code, com_id, com_nom, valeur,
rank() OVER (PARTITION BY dep_code ORDER BY valeur DESC) AS rang
FROM valeur_par_ville) AS result
WHERE rang <= 3
ORDER BY dep_code, rang;

关键修正说明

  1. 统一CTE字段与GROUP BY:将SELECT中的 com_code 改为 commune.com_id,同时加入 com_nom 字段并添加到GROUP BY中,确保符合SQL标准,避免字段歧义。
  2. 修正子查询字段引用:仅选取CTE中实际存在的字段,基于聚合后的 valeur(平均房价)进行排名,而非原始的 valeur_fonciere。
  3. 确保字段可访问:子查询中包含外层需要的 com_id、com_nom 等字段,避免引用错误。
  4. 添加 ORDER BY 子句:让结果按省份代码和排名排序,输出更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:30:41