Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

sql समूह बनाम विशिष्ट

GROUP BY विशिष्ट . में प्रत्येक विशिष्ट मान के अनुसार पंक्तियों के समूहों को एक पंक्ति में मैप करता है कॉलम, जो जरूरी नहीं कि चयन-सूची में हों।

SELECT b, c, d FROM table1 GROUP BY a;

यह क्वेरी कानूनी SQL है (सुधार: केवल MySQL में; वास्तव में यह मानक एसक्यूएल नहीं है और अन्य ब्रांडों द्वारा समर्थित नहीं है)। MySQL इसे स्वीकार करता है, और यह भरोसा करता है कि आप जानते हैं कि आप क्या कर रहे हैं, b . का चयन करके , c , और d एक स्पष्ट तरीके से क्योंकि वे a . की कार्यात्मक निर्भरताएं हैं .

हालाँकि, Microsoft SQL सर्वर और अन्य ब्रांड इस क्वेरी की अनुमति नहीं देते हैं, क्योंकि यह कार्यात्मक निर्भरता को आसानी से निर्धारित नहीं कर सकता है। संपादित करें: इसके बजाय, मानक SQL के लिए आपको एकल-मान नियम . का पालन करना होगा , यानी चयन-सूची के प्रत्येक कॉलम का नाम या तो GROUP BY में होना चाहिए क्लॉज या फिर सेट फंक्शन के लिए एक तर्क हो।

जबकि DISTINCT हमेशा चयन-सूची के सभी स्तंभों और केवल उन स्तंभों को देखता है। यह एक आम गलत धारणा है कि DISTINCT आपको कॉलम निर्दिष्ट करने की अनुमति देता है:

SELECT DISTINCT(a), b, c FROM table1;

कोष्ठक बनाने के बावजूद DISTINCT फ़ंक्शन कॉल की तरह दिखें, ऐसा नहीं है। यह एक क्वेरी विकल्प है और चयन-सूची के तीन क्षेत्रों में से किसी एक में एक विशिष्ट मान क्वेरी परिणाम में एक अलग पंक्ति की ओर ले जाएगा। इस चयन-सूची के किसी एक व्यंजक के चारों ओर कोष्ठक हैं, लेकिन यह परिणाम को प्रभावित नहीं करेगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Azure डेटा स्टूडियो (SQL सर्वर) में क्वेरी निष्पादन योजना कैसे देखें

  2. SQL सर्वर 2008 में लूप करते समय करें

  3. SQL सर्वर बैकअप/रिस्टोर बनाम डिटैच/अटैच

  4. एसक्यूएल के बीच समावेशी नहीं

  5. सी # नेट कोड से एक एसक्यूएल संग्रहीत प्रक्रिया में एक शून्य चर कैसे पास करें?