ऐसा करने के कई तरीके हैं:
WHERE
. में एक फ़िल्टर खंड:
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 सर्वर का उपयोग कर रहे हैं, इसलिए आप परिणाम प्राप्त करने के लिए रैंकिंग फ़ंक्शन का भी उपयोग कर सकते हैं:
select id, name, population
from
(
select id, name, population,
row_number() over(order by population desc) rn
from yourtable
) src
where rn = 1
सभी के डेमो के साथ SQL Fiddle देखें।
रैंकिंग फ़ंक्शन पर एक साइड नोट के रूप में, आप dense_rank()
. का उपयोग करना चाह सकते हैं row_number()
. के बजाय . फिर यदि आपके पास समान जनसंख्या वाले एक से अधिक शहर हैं तो आपको दोनों शहर के नाम मिलेंगे। (डेमो देखें)