सवाल अद्वितीय का चयन करें और अलग चुनें चुनें


मैंने सोचा कि ये समानार्थी थे, लेकिन मैंने माइक्रोसॉफ्ट एसक्यूएल में निम्नलिखित लिखा:

Select Unique col from 
     (select col from table1 union select col from table2) alias

और यह असफल रहा। इसे बदल रहा है

Select Distinct col from 
     (select col from table1 union select col from table2) alias

ठीक कर दिया। क्या कोई समझा सकता है?


133
2017-12-03 05:05


मूल




जवाब:


SELECT UNIQUE एसक्यूएल के ओरेकल के स्वाद द्वारा समर्थित पुराना वाक्यविन्यास है। यह समानार्थी है SELECT DISTINCT

उपयोग SELECT DISTINCT क्योंकि यह मानक एसक्यूएल है, और SELECT UNIQUE गैर मानक है, और ओरेकल के अलावा डेटाबेस ब्रांडों में, SELECT UNIQUE बिल्कुल पहचाना नहीं जा सकता है।


160
2017-12-03 08:00





अद्वितीय एक ऐसा कीवर्ड है जो तालिका () निर्देश में उपयोग किया जाता है ताकि यह इंगित किया जा सके कि एक फ़ील्ड में अद्वितीय डेटा होगा, आमतौर पर प्राकृतिक कुंजी, विदेशी कुंजी आदि के लिए उपयोग किया जाता है।

उदाहरण के लिए:

Create Table Employee(   
    Emp_PKey Int Identity(1, 1) Constraint PK_Employee_Emp_PKey Primary Key,  
    Emp_SSN Numeric Not Null Unique,  
    Emp_FName varchar(16),   
    Emp_LName varchar(16) 
)

यानी किसी के सोशल सिक्योरिटी नंबर की संभावना आपकी तालिका में एक अनूठी फ़ील्ड होगी, लेकिन जरूरी नहीं कि प्राथमिक कुंजी।

क्वेरी को सूचित करने के लिए चयन कथन में विशिष्ट का उपयोग किया जाता है कि आप केवल अनन्य आइटम वापस लौटना चाहते हैं जब फ़ील्ड उस डेटा को रखता हो जो अद्वितीय नहीं हो सकता है।

Select Distinct Emp_LName
From Employee

आपके पास एक ही अंतिम नाम वाले कई कर्मचारी हो सकते हैं, लेकिन आप केवल प्रत्येक अलग-अलग अंतिम नाम चाहते हैं।

जाहिर है कि यदि आप जिस क्षेत्र में पूछताछ कर रहे हैं वह अद्वितीय डेटा रखता है, तो अलग कीवर्ड अनिवार्य हो जाता है।


111
2017-12-03 05:09



आप सामाजिक सुरक्षा संख्या अद्वितीय होना चाहते हैं, लेकिन वे नहीं हैं। उदाहरण के लिए: dailyfinance.com/2010/08/12/... - aij


अनन्य का चयन करें जो आप करने की कोशिश कर रहे हैं उसके लिए वैध वाक्यविन्यास नहीं है

आप या तो चयन का चयन करना चाहते हैं या विशिष्ट चयन का चयन करना चाहते हैं

और वास्तव में, आपको जो भी करने की कोशिश कर रहे हैं उसमें आपको अलग / विशिष्टता की भी आवश्यकता नहीं है। आप उपयुक्त यूनियन स्टेटमेंट पैरामीटर चुनकर डुप्लिकेट को खत्म कर सकते हैं।

नीचे दी गई क्वेरी केवल विशिष्ट मान प्रदान करेगी

select col from table1 
union 
select col from table2

अगर आप डुप्लीकेट चाहते हैं तो आपको करना होगा

select col from table1 
union all
select col from table2

18
2017-12-03 05:14



अगर मैं गलत नहीं हूं, तो ओरेकल आपको कहने की अनुमति देता है select unique...हालांकि, मैं मानक तरीके से करना पसंद करूंगा। - asgs


केवल ओरेकल => में

SELECT DISTINCT तथा SELECT UNIQUE वैसे ही व्यवहार करें। जबकि DISTINCT एएनएसआई एसक्यूएल मानक है, यूनिक एक ओरेकल विशिष्ट कथन है।

अन्य डेटाबेस में (जैसे आपके मामले में एसक्यूएल-सर्वर) =>

SELECT UNIQUE अमान्य वाक्यविन्यास है। UNIQUE कॉलम पर अद्वितीय बाधा जोड़ने के लिए कीवर्ड है।

डिस्टिंट चुनें


1
2017-09-15 07:35





  1. अद्वितीय जबकि पुराने वाक्यविन्यास था अलग नया वाक्यविन्यास है, जो अब मानक वर्ग है।
  2. अद्वितीय एक बाधा उत्पन्न करता है कि सभी मूल्यों को सम्मिलित किया जाना चाहिए दूसरों से अलग होना चाहिए। यदि कोई डुप्लिकेट मान दर्ज करने का प्रयास करता है तो एक त्रुटि देखी जा सकती है। अलग डेटा पुनर्प्राप्त करते समय डुप्लिकेट पंक्तियों को हटाने में परिणाम।
  3. उदाहरण: चुनते हैं DISTINCT छात्र से नाम;

    टेबल व्यक्ति बनाएं ( आईडी वर्चर न्यूल अद्वितीय, नाम वर्कर (20));


0
2018-06-05 17:39