2011-02-06 7 views

उत्तर

31

इस का उपयोग करें:

select name 
from tbl 
where weight = (select max(weight) from tbl) 
+0

वाह, कैसे मूर्ख मुझे एक नेस्टेड क्वेरी का उपयोग कर के बारे में सोचना नहीं! धन्यवाद! –

+7

अधिकतम मूल्य के बराबर "वजन" के मूल्यों के साथ पंक्तियों की संख्या के आधार पर, यह एक से अधिक नाम लौटा सकता है। सिर्फ आपकी जानकारी के लिए। –

+0

आप अधिकतम मूल्य वाले पंक्तियों में से केवल एक को कैसे लौटते हैं (इससे कोई फर्क नहीं पड़ता कि यह कैसे चुनता है)? –

66
SELECT name FROM tbl ORDER BY weight DESC LIMIT 1 

बहुत अन्य जवाब और एक पंक्ति में ही परिणामों की तुलना में अधिक performant।

+5

अच्छा जवाब। मैं यह भी ध्यान रखना चाहता हूं कि यदि वजन में एक इंडेक्स है, तो इंडेक्स पर सॉर्ट किया जाएगा और तेज़ होगा। – bmlkc

+5

अच्छा जवाब, हालांकि दो लोगों के समान वजन होने पर यह दो परिणाम नहीं लौटाएगा। – Stanislasdrg

+1

LIMIT 1 को एक पूर्ण तालिका स्कैन की आवश्यकता है। यह बहुत सारी पंक्तियों के साथ _not_ प्रदर्शनकारी है। अपने प्रश्नों पर 'EXPLAIN' चलाने का प्रयास करें। – Volte

0

आदेश DESC द्वारा शीर्ष पर शून्य मान के साथ पंक्तियों डालता है।

शून्य मान करने के लिए इसी परिणाम देने से बचने के लिए:

SELECT name FROM tbl WHERE weight = (SELECT MAX(weight) FROM tbl);

नोट: कई लोगों को एक वजन अधिकतम वजन के बराबर है, तो यह प्रश्न कई परिणाम देगा। केवल एक को पकड़ने के लिए, क्वेरी के अंत में LIMIT 1 जोड़ें।


स्वीकृतियाँ और अधिक जानकारी:

Why do NULL values come first when ordering DESC in a PostgreSQL query?

MIN/MAX vs ORDER BY and LIMIT

Postgres MAX Function

संबंधित मुद्दे

 संबंधित मुद्दे