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

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

समस्या:

आपकी तालिका में डुप्लिकेट पंक्तियां हैं, केवल आईडी अद्वितीय हैं। आप उन डुप्लिकेट प्रविष्टियों को कैसे ढूंढते हैं?

उदाहरण:

हमारे डेटाबेस में product निम्नलिखित कॉलम में डेटा के साथ:id , name , और category

<थ>नाम
आईडी श्रेणी
1 स्टेक मांस
2 केक मिठाई
3 d>स्टेक मांस
4 पोर्क मांस
5 केक मिठाई
6 केक मिठाई

आइए डुप्लिकेट नाम और उत्पादों की श्रेणियां खोजें। आप COUNT . का उपयोग करके पंक्तियों को समूहीकृत करके डुप्लीकेट ढूंढ सकते हैं एग्रीगेट फ़ंक्शन, और एक HAVING . निर्दिष्ट करना क्लॉज जिसके साथ पंक्तियों को फ़िल्टर करना है।

समाधान:

SELECT  name,
 category,
FROM product
GROUP BY name, category
HAVING COUNT(id) >1;

यह क्वेरी केवल डुप्लिकेट रिकॉर्ड लौटाती है—जिनके उत्पाद का नाम और श्रेणी समान होती है:

नाम श्रेणी
स्टेक मांस
केक मिठाई

हमारी तालिका में दो डुप्लिकेट उत्पाद हैं:मांस श्रेणी से स्टेक और मिठाई श्रेणी से केक। पहला उत्पाद तालिका में दो बार दोहराया जाता है, जबकि दूसरा तीन बार प्रकट होता है।

चर्चा:

डुप्लिकेट मानों का चयन करने के लिए, आपको समान मानों वाली पंक्तियों के समूह बनाने होंगे और फिर एक से अधिक संख्या वाले समूहों का चयन करना होगा। आप GROUP BY . का उपयोग करके इसे प्राप्त कर सकते हैं और एक HAVING खंड।

पहला कदम सभी गैर-आईडी कॉलम में समान मानों वाले रिकॉर्ड के समूह बनाना है (हमारे उदाहरण में, name और category ) आप इसे GROUP BY . के साथ करते हैं खंड। GROUP BY के बाद कीवर्ड, आप उन स्तंभों के नाम डालते हैं जिन्हें आप समूहीकरण के लिए उपयोग करना चाहते हैं। हम id . को बाहर कर देते हैं कॉलम क्योंकि यह हमारी तालिका की प्राथमिक कुंजी है; परिभाषा के अनुसार, उस कॉलम के तहत प्रत्येक पंक्ति का एक अलग मान होगा। अगर हम इसे शामिल करते हैं, तो हम डुप्लिकेट का पता नहीं लगा पाएंगे!

हम एक से अधिक पंक्तियों वाले समूह खोजना चाहते हैं; ऐसे समूहों में परिभाषा के अनुसार डुप्लीकेट होना चाहिए, जब तक कि हमने सही कॉलम पर समूहीकृत किया है। ऐसा करने के लिए, हम एक HAVING . का उपयोग करते हैं खंड। हमारे द्वारा निर्दिष्ट शर्त यह है कि समूह में तत्वों की संख्या—COUNT(id) —एक से बड़ा होना चाहिए:COUNT(id) > 1 . याद रखें कि HAVING आपको समूहों को फ़िल्टर करने की अनुमति देता है; WHERE अलग-अलग पंक्तियों को फ़िल्टर करने के लिए है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 8 WP-CLI आपकी साइट को साफ और अनुकूलित करने के लिए आदेश देता है

  2. RDBMS और NoSQL को पाटना:2DX UI क्लस्टर का परिचय

  3. एक सूची में सभी आइटम से मेल खाने वाली पंक्तियों का चयन करने के 2 तरीके (टी-एसक्यूएल)

  4. एचडीएफएस का परिचय | एचडीएफएस क्या है और यह कैसे काम करता है?

  5. डेटाबेस इंस्टेंस के स्वास्थ्य की निगरानी कैसे करें