我现在正在努力使用 SQL。
我有一个表城市,其中包含行 ID、名称、国家、人口。
ID | name | country | population
1 | Shanghai | CN | 14608512
2 | Buenos Aires | AR | 13076300
3 | Mumbai | IN | 12691836
4 | Karachi | PK | 11624219
5 | Beijing | CN | 7480601
6 | Wuhan | CN | 4184206
7 | Berlin | DE | 3426354
8 | Puyang | CN | 3590000
该数据库包含来自所有人口超过 15000 的城市的全球数据。现在我正在尝试按人口计算世界上最大的 50 个城市。
SELECT * FROM cities ORDER BY population DESC LIMIT 0,50
我现在的问题是我在中国有 12 个城市,在印度有 4 个等。但我需要按国家/地区限制我的结果,所以每个国家/地区只返回 2 个城市。
上述示例的结果:
ID | name | country | population
1 | Shanghai | CN | 14608512
2 | Buenos Aires | AR | 13076300
3 | Mumbai | IN | 12691836
4 | Karachi | PK | 11624219
5 | Beijing | CN | 7480601
7 | Berlin | DE | 3426354
但就像我说的那样,我正在为这种操作使用正确的 sql 查询。我尝试了 GROUP BY ... HAVING 和各种子选择,但似乎没有一个返回正确的结果集。