2

讲座和我的实验室作业中的一些事情没有得到很好的解释。我无法显示正确的信息。这是数据库信息,只是您帮助我的参考。 数据库表信息 这是我要执行 的查询 postgresql php select 语句

这会导致抛出此 SQl 错误

已连接数据库! 查询失败:错误:列“city.name”必须出现在 GROUP BY 子句中或用于聚合函数第 3 行:city.name ^

现在,如果我将 city.name 添加到 GROUP BY 子句中,它会返回 4096 行!我不希望这种情况发生,结果必须按国家名称分组,即 232 行。我只是想显示国家名称、城市名称和该国家人口最多的城市。城市名称让我失望,我猜有一个更复杂、更重语法的解决方案。感谢您的任何帮助,您可以提供。——汤姆·里斯

4

1 回答 1

1

你需要这样的东西:

select
        country.name,
        city.name,
        mp.maxpop
from
        lab6.country,
        lab6.city,
        (select
                country_code,
                max(population) as maxpop
        from
                lab6.city
        group by
                country_code
        ) mp
where
        country.country_code=mp.country_code and
        country.country_code=city.county_code and 
        mp.maxpop=city.population

笔记:

  • 这可以给你更多的结果/县。
  • 您的原始查询不起作用,因为在 ansi sql 中,您不能仅从“group by”查询返回聚合或 group by 表达式。(如错误所述)
于 2013-10-06T18:35:43.590 回答