only_full_group_by =चालू MySQL इंजन को बताता है:लागू न करें GROUP BY
जब आपको संदेह होता है कि क्या परिणाम दिखाना है और त्रुटि फेंकना है। केवल इसे लागू करें यदि Group By
आपको विशेष रूप से बताता है कि क्या करना है। यानी जब Group By
पूर्ण और परिपूर्ण है!
only_full_group_by =off MySQL इंजन को बताता है:हमेशा GROUP BY
लागू करें और अगर आपको इस बारे में संदेह है कि क्या परिणाम चुनना है, तो बस एक यादृच्छिक रूप से चुनें!
यदि आप GROUP BY
का उपयोग करते हैं, तो आपको इसे बंद करने की आवश्यकता नहीं है ठीक से!
उदाहरण:
तालिका:उपयोगकर्ता
id | name
----------------
1 ali
2 john
3 ali
जब आप GROUP BY
. का उपयोग करते हैं name
. पर कॉलम:
SELECT * FROM users GROUP BY name;
दो संभावित परिणाम हैं:
1 ali
2 john
या
2 john
3 ali
MYSQL नहीं जानता कि क्या परिणाम चुनना है! क्योंकि अलग-अलग id
हैं s लेकिन दोनों में name=ali
है ।
समाधान1:
केवल name
. का चयन करना फ़ील्ड:
SELECT name FROM users GROUP BY name;
परिणाम:
ali
john
यह एक अचूक उपाय है। GROUP BY
. बनाने वाले स्तंभों को हटाना अस्पष्ट। इसका मतलब है कि आप जानते हैं कि आप क्या कर रहे हैं। आमतौर पर, आपको
उन स्तंभों की आवश्यकता नहीं होती है, लेकिन यदि आपको उनकी आवश्यकता है, तो समाधान3 पर जाएं !
समाधान2:
only_full_group_by
को बंद किया जा रहा है . MYSQL दो संभावित परिणामों में से एक को चुनेगा रैंडमली !! (यह ठीक है यदि आप वास्तव में परवाह नहीं करते हैं कि id
यह चुनेगा, लेकिन याद रखें कि इसे चालू करें आपकी क्वेरी के तुरंत बाद भविष्य के groupBys में अप्रत्याशित व्यवहार को रोकने के लिए)
समाधान3
एक Aggregate
का उपयोग करें MIN()
की तरह कार्य करें , MAX()
MYSQL को यह तय करने में मदद करने के लिए कि उसे क्या चुनना चाहिए।
उदाहरण के लिए:
SELECT MAX(id), name FROM users GROUP BY name;
परिणाम:
2 john
3 ali
यह ali
. को चुनेगा पंक्ति जिसमें अधिकतम id
. है ।