【发布时间】: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