यूनिक और सिलेक्ट डिस्टिक्ट के बीच अंतर


145

मुझे लगा कि ये समान थे, लेकिन मैंने Microsoft SQL में निम्नलिखित लिखा था:

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

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

जवाबों:


169

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

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


113

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

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

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

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

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


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

18

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

आप या तो अलग-अलग का चयन करना चाहते हैं या अलग-अलग का चयन करना चाहते हैं

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

नीचे की क्वेरी अपने आप में केवल विशिष्ट मूल्य प्रदान करेगी

select col from table1 
union 
select col from table2

यदि आप डुप्लिकेट चाहते हैं तो आपको करना होगा

select col from table1 
union all
select col from table2

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

3

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

SELECT DISTINCTऔर SELECT UNIQUEउसी तरह व्यवहार करते हैं। जबकि DISTINCT ANSI SQL मानक है, UNIQUE एक Oracle विशिष्ट कथन है।

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

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

DISTINCT का चयन करें


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

    CREATE TABLE व्यक्तियों (ईद varchar नहीं NULL अद्वितीय , नाम varchar (20));

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.