mysql查询人口最多的城市_mysql世界数据库:选择人口最多的国家

我想选择人口最多的国家.这是我的查询:

SELECT continent, name, population FROM country HAVING population = MAX(population);

它以某种方式返回0行.

如果我使用嵌套查询,它将起作用:

SELECT continent, name, population FROM country WHERE population = (SELECT MAX(population) FROM country);

所以我的问题是:第一个查询出了什么问题?

好吧,我想我终于弄清楚了整个过程.这里是如何工作的以及替代建议/解决方案为何不起作用的原因:

(首先,正如“ Dan Bracuk”在他的回答中所说,我们必须将GROUP BY与HAVING结合起来,并在SELECT语句的begininng中添加聚合函数)

因此,让我们逐步进行尝试:

SELECT continent, name, population, MAX(population) FROM country;

这将在第一行末尾附加MAX(pop):

“北美”,“阿鲁巴”,“ 103000”,“ 1277558000”

因此MAX(population)只是一个条目,因此将行号限制为1,并且由于我添加了大洲,名称,人口列,因此mysql只从表中选择第一行.

所以,如果我现在写下来:

SELECT continent, name, population, MAX(population) FROM country HAVING population = MAX(population);

我得到0行,因为103000不等于1277558000.

如果我使用:

SELECT continent, name, population, MAX(population) FROM country GROUP BY name;

例如,我获得了所有国家/地区的清单,其中每一行的MAX(人口)=人口.

因此,另外添加“拥有人口= MAX(人口)”无效,因为它已经成立.

我希望我能正确理解它,并能澄清其他人为什么不知道其他解决方案不起作用的问题.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值