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

मैं एक दृश्य से डुप्लिकेट पंक्तियों को कैसे निकालूं?

यदि पंक्तियों में अलग-अलग कॉलम हैं तो DISTINCT आपकी मदद नहीं करेगा। जाहिर है, आप जिन तालिकाओं में शामिल हो रहे हैं उनमें से एक में दूसरी तालिका में एक पंक्ति के लिए एकाधिक पंक्तियां हैं। एक पंक्ति वापस पाने के लिए, आपको उस तालिका में अन्य एकाधिक पंक्तियों को समाप्त करना होगा जिसमें आप शामिल हो रहे हैं।

ऐसा करने का सबसे आसान तरीका है कि आप अपने जहां क्लॉज या जॉइन प्रतिबंध को केवल एक रिकॉर्ड में शामिल करने के लिए बढ़ाएं जो आप चाहते हैं। आमतौर पर इसके लिए एक नियम निर्धारित करने की आवश्यकता होती है जो हमेशा दूसरी तालिका से 'सही' प्रविष्टि का चयन करेगा।

आइए मान लें कि आपके पास इस तरह की एक साधारण समस्या है:

Person:  Jane
Pets: Cat, Dog

यदि आप यहां एक साधारण जुड़ाव बनाते हैं, तो आपको जेन के लिए दो रिकॉर्ड प्राप्त होंगे:

Jane|Cat
Jane|Dog

यह पूरी तरह से सही है अगर आपके विचार में लोगों और पालतू जानवरों के सभी संयोजनों को सूचीबद्ध करना है। हालाँकि, यदि आपका विचार इसके बजाय पालतू जानवरों के साथ लोगों को सूचीबद्ध करने, या लोगों को सूचीबद्ध करने और उनके पालतू जानवरों में से एक को प्रदर्शित करने वाला था, तो आप उस समस्या को मारते हैं जो अब आपके पास है। इसके लिए आपको एक नियम की जरूरत है।

SELECT Person.Name, Pets.Name
FROM Person
  LEFT JOIN Pets pets1 ON pets1.PersonID = Person.ID
WHERE 0 = (SELECT COUNT(pets2.ID) 
             FROM Pets pets2
             WHERE pets2.PersonID = pets1.PersonID
                AND pets2.ID < pets1.ID);

यह जो करता है वह सबसे कम आईडी (पहला पालतू जानवर तालिका में) के साथ पालतू जानवर में शामिल होने के लिए पालतू जानवरों के रिकॉर्ड को प्रतिबंधित करने के लिए एक नियम लागू करता है। WHERE क्लॉज अनिवार्य रूप से कहता है "जहां कम आईडी मान वाले एक ही व्यक्ति के पालतू जानवर नहीं हैं)।

यह एक रिकॉर्ड परिणाम देगा:

Jane|Cat

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

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



  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. किसी अन्य संग्रहीत कार्यविधि SQL सर्वर से संग्रहीत कार्यविधि को कॉल करना

  3. सेल्सफोर्स डेटा बदलने के लिए SQL सर्वर से INSERT INTO का उपयोग करना

  4. निहित और स्पष्ट लेनदेन के बीच अंतर

  5. एसक्यूएल सर्वर (टी-एसक्यूएल) में संयोजन कैसे खोजें