Có một số cách có thể được thực hiện:
Bộ lọc trong WHERE
mệnh đề:
select id, name, population
from yourtable
where population in (select max(population)
from yourtable)
Hoặc một truy vấn con:
select id, name, population
from yourtable t1
inner join
(
select max(population) MaxPop
from yourtable
) t2
on t1.population = t2.maxpop;
Hoặc bạn có thể sử dụng TOP WITH TIES
. Nếu không thể có ràng buộc, thì bạn có thể xóa with ties
. Điều này sẽ bao gồm bất kỳ hàng nào có cùng giá trị tổng thể:
select top 1 with ties id, name, population
from yourtable
order by population desc
Vì bạn đang sử dụng SQL Server nên bạn cũng có thể sử dụng các hàm xếp hạng để nhận được kết quả:
select id, name, population
from
(
select id, name, population,
row_number() over(order by population desc) rn
from yourtable
) src
where rn = 1
Xem SQL Fiddle với Demo của tất cả.
Như một lưu ý phụ về chức năng xếp hạng, bạn có thể muốn sử dụng dense_rank()
thay vì row_number()
. Sau đó, trong trường hợp bạn có nhiều hơn một thành phố có cùng dân số, bạn sẽ nhận được cả hai tên thành phố. (Xem Demo)