Dafür gibt es mehrere Möglichkeiten:
Ein Filter im WHERE
Klausel:
select id, name, population
from yourtable
where population in (select max(population)
from yourtable)
Oder eine Unterabfrage:
select id, name, population
from yourtable t1
inner join
(
select max(population) MaxPop
from yourtable
) t2
on t1.population = t2.maxpop;
Oder Sie können TOP WITH TIES
verwenden . Wenn es keine Bindungen geben kann, können Sie den with ties
entfernen . Dies schließt alle Zeilen ein, die denselben Populationswert haben:
select top 1 with ties id, name, population
from yourtable
order by population desc
Da Sie SQL Server verwenden, können Sie auch Ranking-Funktionen verwenden, um das Ergebnis zu erhalten:
select id, name, population
from
(
select id, name, population,
row_number() over(order by population desc) rn
from yourtable
) src
where rn = 1
Siehe SQL Fiddle mit Demo von allen.
Als Randbemerkung zur Ranking-Funktion möchten Sie vielleicht dense_rank()
verwenden statt row_number()
. Falls Sie dann mehr als eine Stadt mit der gleichen Bevölkerung haben, erhalten Sie beide Städtenamen. (Siehe Demo)