Der er flere måder, hvorpå dette kan gøres:
Et filter i WHERE
klausul:
select id, name, population
from yourtable
where population in (select max(population)
from yourtable)
Eller en underforespørgsel:
select id, name, population
from yourtable t1
inner join
(
select max(population) MaxPop
from yourtable
) t2
on t1.population = t2.maxpop;
Eller du kan bruge TOP MED BÅND
. Hvis der ikke kan være nogen bindinger, så kan du fjerne
select top 1 with ties id, name, population
from yourtable
order by population desc
Da du bruger SQL Server, kan du også bruge rangeringsfunktioner til at få resultatet:
select id, name, population
from
(
select id, name, population,
row_number() over(order by population desc) rn
from yourtable
) src
where rn = 1
Se SQL Fiddle with Demo of all.
Som en sidebemærkning til rangeringsfunktionen vil du måske bruge dense_rank()
i stedet for row_number()
. Så hvis du har mere end én by med samme befolkning, får du begge bynavne. (Se Demo)