2008-11-06 5 views
14

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

तालिका::

A B C 
1 x q 
2 y w 
3 y e 
4 z r 
5 z t 
6 z y 

एसक्यूएल जादू

परिणाम:

B C 
y w 
y e 
z r 
z t 
z y 

मूल रूप से यह

इस मामले में पहले से कहीं अधिक एक उदाहरण शब्द के हजारों के लायक है कोलम के सभी अद्वितीय मूल्यों को हटा देता है एन बी लेकिन रखे गए डेटा की कई पंक्तियां रखता है। मैं विशिष्ट नहीं होने के लिए "बी द्वारा समूह" और फिर "गिनती> 1" कर सकता हूं लेकिन परिणाम केवल बी की एक पंक्ति सूचीबद्ध करेगा जो मुझे 2 या उससे अधिक की आवश्यकता नहीं है।

कोई मदद?

धन्यवाद।

उत्तर

26
Select B, C 
From Table 
Where B In 
    (Select B From Table 
    Group By B 
    Having Count(*) > 1) 
3
select 
    * 
from 
    my_table t1, 
    my_table t2 
where 
    t1.B = t2.B 
and 
    t1.C != t2.C 

-- apparently you need to use <> instead of != in Access 
-- Thanks, Dave! 

ऐसा कुछ?

+0

यह करीब है, लेकिन आप <> के बजाय = Access में उपयोग करने के लिए की जरूरत है!। –

+0

उम, आप एक्सेस में एसक्यूएल या जेट के कुछ रूपों का परीक्षण किए बिना जेट एसक्यूएल के बारे में उत्तर क्यों देंगे? एक उत्तर पोस्ट क्यों करें जिसे आप नहीं जानते हैं, काम करेगा (जैसा कि आप पाएंगे कि क्या आप एसक्यूएल पेस्ट करने के लिए 3 सेकंड खर्च करते हैं! = एक्सेस क्यूबीई ग्रिड में)? –

+3

क्योंकि मैं एक्सेस का उपयोग नहीं करता हूं और मेरे पास इंस्टॉलेशन उपलब्ध नहीं है? मेरी पोस्टिंग का मुद्दा यह था कि आप सामान्य SQL में दो बार एक ही तालिका का उपयोग कर सकते हैं (शायद मुझे पता है कि एक्सेस में काम नहीं करता है)। – a2800276

1

बी के समूह के साथ निर्धारित बी के अद्वितीय मानों में शामिल हों और तालिका से सी मानों को पुनर्प्राप्त करने के लिए मूल तालिका में वापस जाएं।

7

परिणाम आप इस होगा चाहते लौटने का एक और तरीका है:

select * 
from 
    my_table 
where 
    B in 
    (select B from my_table group by B having count(*) > 1) 
संबंधित मुद्दे