2010-12-16 14 views
5

से डुप्लिकेट रिकॉर्ड्स हटाना मेरे पास टेबल 1 नामक एक टेबल है जिसमें 48 रिकॉर्ड हैं। जिसमें से केवल 24 उस तालिका में होना चाहिए। किसी कारण से मुझे इसमें डुप्लिकेट रिकॉर्ड डाले गए। मैं उस तालिका से डुप्लिकेट रिकॉर्ड कैसे हटा सकता हूं।तालिका

+2

यदि केवल 48 है, तो एसएसएमएस लोड करें और उन्हें मैन्युअल रूप से हटाएं। –

उत्तर

5

यहाँ कुछ करता है, तो SQL सर्वर संस्करण 2005 या उसके बाद है आप की कोशिश कर सकते है।

WITH cte AS 
    (
    SELECT {list-of-columns-in-table}, 
     row_number() over (PARTITION BY {list-of-key-columns} ORDER BY {rule-to-determine-row-to-keep}) as sequence 
    FROM myTable 
    ) 

DELETE FROM cte 
WHERE sequence > 1 

यह एक सामान्य तालिका अभिव्यक्ति (सीटीई) का उपयोग करता है और अनुक्रम कॉलम जोड़ता है। {सूची-के-कॉलम-इन-टेबल} जैसा कि यह बताता है। सभी कॉलम की आवश्यकता नहीं है, लेकिन मैं यहां समझाऊंगा नहीं।

{list-of-key-column] वह कॉलम है जिसका उपयोग आप डुप्लिकेट को परिभाषित करने के लिए करते हैं।

{नियम-से-निर्धारित-पंक्ति-से-रखने} एक अनुक्रम है ताकि पहली पंक्ति रखने के लिए पंक्ति हो। उदाहरण के लिए, यदि आप सबसे पुरानी पंक्ति रखना चाहते हैं, तो आप अनुक्रम के लिए दिनांक कॉलम का उपयोग करेंगे।

यहां वास्तविक कॉलम के साथ क्वेरी का एक उदाहरण दिया गया है।

WITH cte AS 
    (
    SELECT ID, CourseName, DateAdded, 
     row_number() over (PARTITION BY CourseName ORDER BY DateAdded) as sequence 
    FROM Courses 
    ) 

DELETE FROM cte 
WHERE sequence > 1 

यह उदाहरण CoursName मूल्य के आधार पर डुप्लीकेट पंक्तियों दूर करता है और DateAdded मूल्य पर सबसे पुराना basesd रहता है।

0

http://support.microsoft.com/kb/139444

यह खंड कुंजी है। प्राथमिक बिंदु आपको दूर ले जाना चाहिए। ;)

इस लेख की चर्चा पता लगाने और एक मेज से डुप्लिकेट प्राथमिक कुंजी को निकालने का तरीका। हालांकि, आपको डुप्लिकेट को पुनरावृत्ति को रोकने के लिए होने वाली प्रक्रिया की जांच करने की प्रक्रिया की जांच करनी चाहिए।

, अपने तार्किक कुंजी द्वारा डेटा समूहीकरण जब से तुम स्पष्ट रूप से उन्हें निर्धारित नहीं किया है, और एक होने COUNT (*)> अंत में 1 बयान को लागू करने से पहले अपने रिकॉर्ड को पहचानें। लेख गहराई में इस में जाता है।

0

यह एक आसान तरीका

Select * Into #TempTable FROM YourTable 
Truncate Table YourTable 
Insert into YourTable Select Distinct * from #TempTable 
Drop Table #TempTable 
+0

दोस्त काम नहीं कर रहा है। फिर भी यह – Sam

+0

करने के बाद 48 रिकॉर्ड हैं यदि यह काम नहीं करता है तो इसका मतलब है कि वे वास्तव में डुप्लिकेट नहीं हैं क्योंकि अलग-अलग डुप्लीकेट को खत्म कर देंगे, क्या आप प्राथमिक कुंजी का उपयोग कर रहे हैं? – Raymund

+0

मैं प्राथमिक कुंजी का उपयोग नहीं कर रहा हूं लेकिन मेरे पास आईडी नामक कॉलम है जो पहचान का है – Sam