किसी ने मुझे एक एसक्यूएल क्वेरी भेजी थी जहाँ GROUP BY
क्लॉज में कथन शामिल था GROUP BY 1
:।
यह एक टाइपो सही होना चाहिए? किसी भी कॉलम को उपनाम नहीं दिया गया है 1. इसका क्या मतलब हो सकता है? क्या मुझे यह मान लेना सही है कि यह एक टाइपो होना चाहिए?
किसी ने मुझे एक एसक्यूएल क्वेरी भेजी थी जहाँ GROUP BY
क्लॉज में कथन शामिल था GROUP BY 1
:।
यह एक टाइपो सही होना चाहिए? किसी भी कॉलम को उपनाम नहीं दिया गया है 1. इसका क्या मतलब हो सकता है? क्या मुझे यह मान लेना सही है कि यह एक टाइपो होना चाहिए?
जवाबों:
SELECT account_id, open_emp_id
^^^^ ^^^^
1 2
FROM account
GROUP BY 1;
उपरोक्त क्वेरी में GROUP BY 1
संदर्भित है कि first column in select statement
कौन है
account_id
।
आप भी निर्दिष्ट कर सकते हैं ORDER BY
।
नोट: ORDER BY और GROUP BY की संख्या हमेशा 1 के साथ शुरू होती है 0 के साथ नहीं।
फ़ील्ड नाम द्वारा समूहीकरण के अलावा, आप तालिका के भीतर क्रमिक, या फ़ील्ड की स्थिति के अनुसार भी समूह बना सकते हैं। 1 पहले क्षेत्र से मेल खाता है (नाम की परवाह किए बिना), 2 दूसरा है, और इसी तरह।
यदि टेबल / दृश्य संरचना में बदलाव हो सकता है, तो यह आम तौर पर सलाह दी जाती है कि आप कुछ विशिष्ट पर समूह बना रहे हैं। इसके अतिरिक्त, यह जल्दी से समझना मुश्किल हो सकता है कि आपकी SQL क्वेरी क्या कर रही है यदि आपने तालिका फ़ील्ड को याद नहीं किया है।
यदि आप एक अद्वितीय सेट लौटा रहे हैं, या जल्दी से अस्थायी लुकअप कर रहे हैं, तो टाइपिंग को कम करने के लिए यह अच्छा शॉर्टहैंड सिंटैक्स है। यदि आप किसी बिंदु पर फिर से क्वेरी को चलाने की योजना बनाते हैं, तो मैं भविष्य में भ्रम और अप्रत्याशित जटिलताओं (योजना में बदलाव के कारण) से बचने के लिए उन्हें बदलने की सलाह दूंगा।
इसका मतलब है कि अपने चयनित क्लॉज में 1 कॉलम द्वारा sql समूह, हम हमेशा इसके GROUP BY 1
साथ मिलकर उपयोग करते हैं ORDER BY 1
, इसके अलावा आप इस तरह का भी उपयोग कर सकते हैं GROUP BY 1,2,3..
, निश्चित रूप से यह हमारे लिए सुविधाजनक है, लेकिन आपको उस स्थिति पर ध्यान देने की आवश्यकता है परिणाम हो सकता है कि आप क्या नहीं हैं चाहते हैं कि किसी ने आपके चुनिंदा कॉलम को संशोधित किया है, और यह कल्पना नहीं है
यह समूह स्थिति के आधार पर समूह द्वारा आपके द्वारा समूह के बाद रखा जाएगा।
उदाहरण के लिए यदि आप ' SELECT SALESMAN_NAME, SUM(SALES) FROM SALES GROUP BY 1
' चलाते हैं तो यह समूह द्वारा होगा SALESMAN_NAME
।
ऐसा करने पर एक जोखिम यह है कि यदि आप ' Select *
' चलाते हैं और किसी कारण से आप एक अलग क्रम पर कॉलम के साथ तालिका को फिर से बनाते हैं, तो यह आपको एक अलग परिणाम देगा जो आप अपेक्षा करेंगे।