【问题标题】:Using sample "world" database to find country with most cities使用示例“世界”数据库查找城市最多的国家
【发布时间】:2020-07-21 08:10:51
【问题描述】:

我目前正在学习 mySQL。我注意到 mySQL 带有一个“世界”数据库,其中包含来自世界各地的城市及其各自国家和人口的数据库。

我有兴趣找到使用此数据库的最多个城市的前 5 个国家(city 是表的名称),这是我使用的查询:

use world;

select `Name`,count(*) 
from  `city` 
group by `Name` 
order by count(*) desc 
limit 5;

这是正确的吗?我有疑问,因为由于某种原因,当我删除 count(*) 列时,我得到了不同的结果。

谢谢!

【问题讨论】:

  • 您是否也删除了order by
  • @artm 不,我在每个查询中保留“count(*)”部分。我确实与结果有一些重叠,但它们并不相同(我认为它们应该是)。
  • 如果你想得到国家,你可能应该选择国家名称并按它们分组,而不是城市名称。
  • @Sirko 我明白你的意思。我按国名分组,这给了我一个更现实的答案。我的原始查询是否找到了最常见的 5 个城市名称?
  • 当我在 sql 中使用 TOP 尝试此操作时,无论有无 , count(*),结果都是相同的。不过,我认为 TOP 和 LIMIT 的工作方式不会有所不同。

标签: mysql


【解决方案1】:

这个问题很久以前就问过了。 我不是 SQL 专家,但我相信您可以通过以下方式获得所需的结果:

select c.name, count(ct.name)
from country c
INNER JOIN city ct
ON ct.countrycode=c.code
group by c.name
order by 2 desc
limit 5 ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 2015-12-27
    相关资源
    最近更新 更多