क्या GROUP BY
MySQL SELECT
क्वेरी में एक से अधिक कॉलम संभव है ? उदाहरण के लिए:
GROUP BY fV.tier_id AND 'f.form_template_id'
क्या GROUP BY
MySQL SELECT
क्वेरी में एक से अधिक कॉलम संभव है ? उदाहरण के लिए:
GROUP BY fV.tier_id AND 'f.form_template_id'
जवाबों:
GROUP BY col1, col2, col3
हां, आप कई कॉलमों द्वारा समूह बना सकते हैं। उदाहरण के लिए,
SELECT * FROM table
GROUP BY col1, col2
परिणाम पहले col1 द्वारा, फिर col2 द्वारा समूहीकृत किए जाएंगे। MySQL में, स्तंभ प्राथमिकता बाएं से दाएं जाती है।
GROUP BY
लागू होता है col1+col2
। जैसे col1 = 1, 2, 1, 2 | col2 = 1, 2, 3, 2
और चल रहा है के रूप में सुझाव के विपरीत GROUP BY col1,col2
वापस आ जाएगी । जबकि कॉल 2 की वापसी के बढ़ते क्रम को बदल देगा। डेमो: sqlfiddle.com/#/9/d5f69/1 ध्यान दें कि पंक्ति आईडी: 2 कॉलम को निष्क्रिय करने के बावजूद दोनों मामलों में वापस आ जाती है । 1,1|1,3|2,2
1,1|2,2
GROUP BY col2, col1
1,1|2,2|1,3
2,2
GROUP BY
) द्वारा पहले mysql सॉर्ट । और अगर पहले परिभाषित कॉलम में समान परिणाम हैं, तो केवल समान परिणाम के भीतर दूसरे परिभाषित कॉलम के अनुसार
SUM
साथ उपयोग करने के संबंध में GROUP BY
। यदि GROUP BY
केवल एक कॉलम के द्वारा, तो SUM
प्रत्येक भिन्न (भिन्न) के सभी मानों को स्तंभ मान sqlfiddle.com/## .9/1cbde2/2 । अगर GROUP BY
दो कॉलम। फिर पहले चेक में mysql अगर पहले कॉलम के मूल्य के लिए दूसरे कॉलम में अलग-अलग मान हैं। यदि हाँ, तो SUM
दूसरा कॉलम sqlfiddle.com/#/9/1cbde2/1 के प्रत्येक अलग मूल्य mysql ।
हां, लेकिन दो से अधिक स्तंभों को समूहीकृत करने का क्या मतलब है? खैर, यह प्रत्येक अद्वितीय जोड़ी प्रति पंक्ति द्वारा समूहीकरण के समान है। आपके द्वारा स्तंभों को क्रमबद्ध करने के क्रम में पंक्तियों को क्रमबद्ध करने का तरीका बदल जाता है।
अपने उदाहरण में, आप लिखेंगे
GROUP BY fV.tier_id, f.form_template_id
इस बीच, कोड
GROUP BY f.form_template_id, fV.tier_id
इसी तरह के परिणाम देगा, लेकिन अलग तरह से हल किया।
एक सरल उदाहरण का उपयोग करने के लिए, मेरे पास एक काउंटर था जो एक साइट पर प्रति विज़िट किए गए पृष्ठ पर अद्वितीय आईपी पते को संक्षेप में प्रस्तुत करने की आवश्यकता थी। जो कि मूल रूप से pagename और फिर IP द्वारा समूहीकृत है। मैंने इसे DISTINCT और GROUP BY के संयोजन से हल किया।
SELECT pagename, COUNT(DISTINCT ipaddress) AS visit_count FROM log_visitors GROUP BY pagename ORDER BY visit_count DESC;
यदि आप एक ही समय में दो कॉलम के आधार पर पसंद करते हैं (मुझे इसे लागू करने की आवश्यकता है), तो मैंने इस बिंदु को देखा:
SELECT CONCAT (col1, '_', col2) AS Group1 ... GROUP BY Group1
SELECT CONCAT(col1, '_', col2) FROM GROUP BY col1, col2
:। परिणाम आमतौर पर इस उत्तर के समान दिखाई देंगे , लेकिन आंतरिक निष्पादन काफी अलग है।
GROUP BY CONCAT(col1, '_', col2)
GROUP BY col1, col2
। यह कुछ डेटा के साथ गलत परिणाम देगा। col1, col2
मानों को कहें : ('a_b', 'c')
एक पंक्ति में और ('a', 'b_c')
दूसरी पंक्ति में। GROUP BY CONCAT के साथ यह गलत उत्तर, दो पंक्तियों को एक में समेट देगा। सही उत्तर नहीं होगा।
SELECT CONCAT(col1, '_', col2) ... FROM ... GROUP BY col1, col2 ;