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

SQL तालिका में डुप्लिकेट मान कैसे खोजें

आम तौर पर, डुप्लीकेट पंक्तियों को रोकने के लिए टेबल पर अद्वितीय बाधाएं डालना सबसे अच्छा अभ्यास है। हालाँकि, आप अपने आप को एक ऐसे डेटाबेस के साथ काम करते हुए पा सकते हैं जहाँ मानवीय त्रुटि, आपके आवेदन में एक बग, या बाहरी स्रोतों से अशुद्ध डेटा के माध्यम से डुप्लिकेट पंक्तियाँ बनाई गई हैं। यह ट्यूटोरियल आपको इन डुप्लिकेट पंक्तियों को खोजने का तरीका सिखाएगा।

साथ चलने के लिए, आपको अपने डेटाबेस तक पढ़ने की पहुंच और अपने डेटाबेस को क्वेरी करने के लिए एक टूल की आवश्यकता होगी।

डुप्लीकेट मानदंड की पहचान करें

पहला कदम डुप्लिकेट पंक्ति के लिए अपने मानदंड को परिभाषित करना है। क्या आपको एक साथ अद्वितीय होने के लिए दो स्तंभों के संयोजन की आवश्यकता है, या आप केवल एक स्तंभ में डुप्लिकेट खोज रहे हैं? इस उदाहरण में, हम अपनी उपयोगकर्ता तालिका में दो स्तंभों में डुप्लीकेट खोज रहे हैं:उपयोगकर्ता नाम और ईमेल।

डुप्लीकेट मौजूद हैं सत्यापित करने के लिए क्वेरी लिखें

पहली क्वेरी जो हम लिखने जा रहे हैं, वह यह सत्यापित करने के लिए एक सरल क्वेरी है कि क्या तालिका में वास्तव में डुप्लिकेट मौजूद हैं। हमारे उदाहरण के लिए, मेरी क्वेरी इस तरह दिखती है:

SELECT username, email, COUNT(*)
FROM users
GROUP BY username, email
HAVING COUNT(*) > 1

HAVING यहां महत्वपूर्ण है क्योंकि WHERE . के विपरीत , HAVING कुल कार्यों पर फ़िल्टर।

यदि कोई पंक्तियाँ वापस आती हैं, तो इसका मतलब है कि हमारे पास डुप्लिकेट हैं। इस उदाहरण में, हमारे परिणाम इस तरह दिखते हैं:

<थ>ईमेल <थ>गिनती
उपयोगकर्ता नाम
पीट [email protected] 2
जेसिका [email protected] 2
मील [email protected] 2

डुप्लिकेट वाली सभी पंक्तियों की सूची बनाएं

पिछले चरण में, हमारी क्वेरी ने डुप्लिकेट की एक सूची लौटा दी। अब, हम प्रत्येक डुप्लिकेट पंक्ति के लिए संपूर्ण रिकॉर्ड वापस करना चाहते हैं।

इसे पूरा करने के लिए, हमें पूरी तालिका का चयन करना होगा और उसे अपनी डुप्लिकेट पंक्तियों में शामिल करना होगा। हमारी क्वेरी इस तरह दिखती है:

SELECT a.*
FROM users a
JOIN (SELECT username, email, COUNT(*)
FROM users 
GROUP BY username, email
HAVING count(*) > 1 ) b
ON a.username = b.username
AND a.email = b.email
ORDER BY a.email

यदि आप बारीकी से देखें, तो आप देखेंगे कि यह प्रश्न इतना जटिल नहीं है। आरंभिक SELECT उपयोगकर्ता तालिका में बस प्रत्येक कॉलम का चयन करता है, और फिर आंतरिक हमारी प्रारंभिक क्वेरी से डुप्लिकेट डेटा तालिका के साथ जुड़ जाता है। चूंकि हम तालिका में स्वयं शामिल हो रहे हैं, इसलिए दो संस्करणों को लेबल करने के लिए उपनाम (यहां, हम a और b का उपयोग कर रहे हैं) का उपयोग करना आवश्यक है।

इस क्वेरी के लिए हमारे परिणाम इस तरह दिखते हैं:

<थ>ईमेल
आईडी उपयोगकर्ता नाम
1 पीट [email protected]
6 पीट [email protected]
12 जेसिका [email protected]
13 जेसिका [email protected]
2 मील [email protected]
9 मील [email protected]

चूंकि इस परिणाम सेट में सभी पंक्ति आईडी शामिल हैं, इसलिए हम बाद में पंक्तियों को डुप्लिकेट करने में हमारी सहायता के लिए इसका उपयोग कर सकते हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रीयल-टाइम ऑपरेशनल एनालिटिक्स और नॉन-क्लस्टर्ड कॉलम स्टोर इंडेक्स

  2. कर्सर विकल्पों पर अनुवर्ती कार्रवाई

  3. एक डेटाबेस क्या है? परिभाषा, प्रकार और घटक

  4. एक रियल एस्टेट एजेंसी डेटा मॉडल

  5. AWS समिट्स 2018:शिकागो रिकैप