有几种方法可以做到这一点:
中的一个过滤器WHERE
clause:
select id, name, population
from yourtable
where population in (select max(population)
from yourtable)
或者子查询:
select id, name, population
from yourtable t1
inner join
(
select max(population) MaxPop
from yourtable
) t2
on t1.population = t2.maxpop;
或者你可以使用TOP WITH TIES
。如果没有领带,那么您可以删除with ties
。这将包括具有相同人口值的任何行:
select top 1 with ties id, name, population
from yourtable
order by population desc
由于您使用的是 SQL Server,您还可以使用排名函数来获取结果:
select id, name, population
from
(
select id, name, population,
row_number() over(order by population desc) rn
from yourtable
) src
where rn = 1
See SQL 摆弄演示 http://www.sqlfiddle.com/#!3/92998/9 of all.
作为排名函数的旁注,您可能需要使用dense_rank()
代替row_number()
。然后,如果您有多个城市具有相同的人口,您将获得两个城市名称。 (看Demo http://www.sqlfiddle.com/#!3/e9df7/4)