आप MAX
का उपयोग कर रहे हैं , जो एक समग्र कार्य है। समूह के रूप में तालिका में एकाधिक पंक्तियों का इलाज करने का प्रभाव समग्र कार्यों का होता है। यदि आप कुछ विशेष नहीं करते हैं, तो संपूर्ण तालिका की सभी पंक्तियों का उपयोग एक बड़े समूह के रूप में किया जाएगा, और जब एक समग्र कार्य जैसे MAX
वहाँ है, इन सभी पंक्तियों को केवल एक समग्र पंक्ति में संघनित किया जाएगा। वह संघनक प्रभाव अन्य समग्र कार्यों जैसे MIN
. के लिए भी होता , SUM
, GROUP_CONCAT
और दोस्तों (देखें:http://dev. mysql.com/doc/refman/5.1/hi/group-by-functions.html
) आप GROUP BY
. का उपयोग करके विशिष्ट समूहों को भी लागू कर सकते हैं निर्माण करें, लेकिन यदि आप समग्र फ़ंक्शन की घटना नहीं करते हैं, तो सभी पंक्तियों को एक पंक्ति में जोड़ दिया जाएगा (लेकिन यह बंचिंग-अप WHERE
लागू करने के बाद होता है। शर्त, इसलिए केवल फ़िल्टर की गई पंक्तियों को एकत्रित किया जाता है)
अब, समग्र कार्यों के इस संघनक या 'कम करने' के प्रभाव के कारण, कई मूल्यों में से एक मान बनाने का कोई तरीका होना चाहिए। MAX
. के लिए , यह तरीका है कि आप MAX
के तर्क के रूप में पारित व्यंजक के सभी उदाहरणों के लिए मिले अधिकतम मान को ही सूचीबद्ध करें . लेकिन आपके अन्य कॉलम में ऐसा समग्र कार्य नहीं है। अधिकांश डेटाबेस उत्पादों के लिए, SELECT
में गैर-समेकित और साथ ही एकत्रित कॉलम दोनों की उपस्थिति सूची एक त्रुटि होगी। लेकिन MySQL गलत/अलग तरीके से व्यवहार करता है और SELECT
में सूचीबद्ध प्रत्येक गैर-एकीकृत अभिव्यक्ति के लिए उपलब्ध मानों में से केवल एक देता है अंश। कौन सा मान mysql तक है - आप किसी विशेष एल्गोरिथम पर भरोसा नहीं कर सकते।
कई मामलों में, लोग "जिस भी पंक्ति का अधिकतम मान हो" के साथ कुछ करना चाहते हैं, दूसरे शब्दों में, उस पंक्ति को ढूंढें जिसका मान अधिकतम मान के रूप में है, लेकिन उस पंक्ति के अन्य स्तंभों का उपयोग अलग-अलग करें। मिडपार्का द्वारा प्रदान किया गया समाधान ऐसा करता है, और इसे प्राप्त करने के अन्य तरीके भी हैं (MySQL समूह-वार अधिकतम के लिए Google)। समग्र कार्यों और संबंधित GROUP BY
. के बारे में अधिक सामान्य जानकारी के लिए क्लॉज, आप -शेमलेस सेल्फप्लग- मेरा लेख यहां देख सकते हैं:http://rpbouman.blogspot.com/2007/05/debunking-group-by-myths.html