2015-05-18 66 views
0

有一个被称为cities,看起来像这样的表:选择最大列的值不提供所需结果

id | city | population | year 

我只需要:

每个城市选择人口和一年的最大量的最大人口。没有嵌套查询一个解决方案是优选

所以,我想这一点:

SELECT `city`, MAX(`year`), MAX(`population`) FROM `cities` GROUP BY `city` 

但它给错误的结果。我究竟做错了什么?

+1

你不需要'MAX(一年)'你只需要'SELECT城市,一年中,MAX(人口)由城市GROUP BY city' –

+0

可以为您提供样品输出,喜欢你期待和你有什么? – Mukund

+0

MySQL?请标记,因为MySQL有它自己的方法... – jarlh

回答

2

1您必须采取最大人口数量,而不是您需要的最大人口数量。试试这个:

SELECT C.city, max(C2.year), C.MAX_population 
FROM 
(SELECT city, MAX(population) AS MAX_population FROM cities GROUP BY city) C 
JOIN cities C2 on C2.city = C.city and C2.population = C.MAX_population 
GROUP BY C.city, C.MAX_population 
+0

是否可以在没有嵌套查询的情况下执行相同的操作? – Yang

+0

@bad_boy我不确定 – Parado