आपको group by
. पर पढ़ना होगा खंड।
प्रक्रिया में भ्रम की शुरुआत करते हुए, MySQL की तुलना में इसे बहुत अधिक अनुमेय किया जा रहा है। मूल रूप से, बिना समुच्चय के किसी भी कॉलम को group by
. में शामिल किया जाना चाहिए खंड। लेकिन MySQL वाक्य रचनात्मक चीनी कॉलम को "भूलने" की अनुमति देता है। जब आप ऐसा करते हैं, तो MySQL उस सेट से एक मनमाना मान निकालता है जिसके द्वारा वह समूह बना रहा है। आपके मामले में, सेट में पहली पंक्ति bob
. है , तो यह उसे लौटा देता है।
आपका पहला स्टेटमेंट (max()
. का इस्तेमाल करके) बिना group by
. के ) बस गलत है।
यदि आप सबसे पुराने उपयोगकर्ताओं में से एक चाहते हैं, order by age desc limit 1
आगे बढ़ने का सही तरीका है।
यदि आप सभी सबसे पुराने उपयोगकर्ता चाहते हैं, तो आपको एक उप-चयन की आवश्यकता है:
SELECT p.* FROM people p WHERE p.age = (select max(subp.age) from people subp);