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

SQL查询仅返回一行且GROUP BY附近报错的问题求助

SQL语句错误原因说明

错误原因

  • 语法顺序错误:SQL标准语法要求GROUP BY子句必须在ORDER BY子句之前执行,你当前的语句将ORDER BY写在GROUP BY前面,直接触发语法错误。
  • 分组规则不兼容:SELECT列表中包含非聚合字段country_name,但GROUP BY仅指定了country_code,如果数据库开启了ONLY_FULL_GROUP_BY默认模式,这种写法也会报错。由于country_code是Country表主键,一个country_code对应唯一的country_name,建议将country_name也加入GROUP BY保证多数据库兼容。
  • 无分组时聚合逻辑错误:当你仅保留SELECT和FROM子句时,语句中包含聚合函数COUNT(),没有分组的情况下数据库会把所有匹配行聚合为单条结果,非聚合字段country_code和country_name的取值为数据库随机返回(多数实现取结果集最后一行的值),所以会出现仅返回加拿大一条数据的情况,COUNT返回的是所有城市的总条数,不是单国家的城市数,和预期不符。

修正后的SQL语句

SELECT c.country_code, co.country_name, COUNT(c.city_name) AS city_count
FROM Country co JOIN City c USING (country_code)
GROUP BY c.country_code, co.country_name
ORDER BY city_count;

执行结果说明

修正后的语句会返回所有有城市数据的国家对应的城市数量,和测试数据匹配的结果为:

country_codecountry_namecity_count
CANCanada7
MEXMexico8
USUnited States9
CHNChina9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:15:04