2010-01-13 20 views
5

क्या मैं रिकॉर्ड्स खोजने के लिए एक SQL क्वेरी का उपयोग कर सकता हूं जहां एक फ़ील्ड दोनों में समान है? यही है, क्या मैं निम्नलिखित कॉलम का उपयोग कर सकता हूं और नाम कॉलम (और फोन को अनदेखा कर) की तुलना करके 1,3 (आईडी) वापस कर सकता हूं?एसक्यूएल के लिए डुप्लीकेट के साथ रिकॉर्ड ढूंढना संभव है?

 
    ID | Name | Phone 

    1 | Bob | 5555555555 
    2 | John | 1234567890 
    3 | Bob | 1515151515 
    4 | Tim | 5555555555

उत्तर

10

सभी के नाम है कि एक से अधिक बार आप इस कथन निष्पादित कर सकते हैं मौजूद पाने के लिए:

SELECT Name FROM People GROUP BY Name HAVING COUNT(*)>1; 
+1

आईडी प्राप्त करने के लिए आपको शायद उपरोक्त कथन का उपयोग किसी अन्य चयन कथन के साथ करना होगा। की तरह कुछ: [तालिका का नाम] चयन आईडी जहां में नाम (चयन नाम [तालिका का नाम] ग्रुप द्वारा नाम होने COUNT (*)> 1) काम करेगा –

+1

एक बात मैं जोड़ना चाहते थे कि आप की आवश्यकता है एक रिकॉर्ड पहचानने के लिए पहचानकर्ता के रूप में नामों का उपयोग करते समय सावधान रहना, क्योंकि जब तक कि आप सुनिश्चित न हों कि आपकी तालिका में एक ही नाम वाले दो लोग कभी भी परेशानी नहीं करेंगे। –

2

डुप्लिकेट "1,3" की आईडी प्राप्त करने के लिए श्रेणीबद्ध कि जिस तरह से GROUP_CONCAT का उपयोग करें:

SELECT GROUP_CONCAT(ID SEPARATOR ',') 
FROM Table 
GROUP BY Name 
HAVING COUNT(*) > 1 
0

एक और - जरूरी कुशल नहीं - तरीका यह है एक साथ है आत्म में शामिल होने:

SELECT P1.Id, P2.Id 
    FROM People P1, People P2 
WHERE P1.Id < P2.Id 
    AND P1.Name = P2.Name; 

पहली शर्त यह सुनिश्चित करती है कि आप केवल जोड़ी (1,3) देखें और न कि अतिरिक्त जोड़े (3,1) या समान पंक्तियां (1,1), (3,3)।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^