2011-07-21 12 views
11

संभव डुप्लिकेट:TSQL निकालें दोहराया पंक्तियों केवल

SiteKey, नाम शहर

SiteKey,:
SQL - How can I remove duplicate rows?

उदाहरण यह मेरी मेज है ऑटो increament है, नाम अलग है, लेकिन कुछ बार 2 Sitekey एक ही शहर होगा।

उदाहरण:

1, A , CityA 
2, B, CityB 
3, C, CityA 
4, D, CityF 

तो मैं पंक्तियों 3 को दूर करने, और पंक्तियों 1,2,4 केवल रखने की जरूरत है।

इसकी एसक्यूएल 2005 और ऊपर।

आपकी मदद धन्यवाद।

+1

यहाँ एक प्रश्न के लिए एक लिंक जो तुम्हारा जवाब देता है: http://stackoverflow.com/questions/18932/sql-how-can-i-remove-duplicate-rows –

उत्तर

12

जोड़ने यहाँ 2 तरीके आप यह कर सकते हैं।

DELETE t 
FROM 
<table> t 
WHERE EXISTS 
    (SELECT 1 FROM <table> 
    WHERE t.SiteKey > SiteKey AND t.City = City) 


DELETE t 
FROM 
<table> t 
INNER JOIN <table> t2 
ON t.City = t2.City 
AND t.SiteKey > SiteKey 
+0

EXISTS का उपयोग करने का अच्छा उदाहरण – Chains

4

यह तो मानक SQL

DELETE 
    mytable 
WHERE 
    SiteKey NOT IN 
    (
    SELECT 
     MIN(SiteKey) 
    FROM 
     Mytable 
    GROUP BY 
     City 
    ) --Don't need 'KeepMe' 

है, एक अद्वितीय बाधा

ALTER TABLE MyTable WITH CHECK ADD 
    CONSTRAINT UQ_MyTable_City UNIQUE (City) 
+0

मानक SQL मेरे लिए काम नहीं कर रहा है एसक्यूएल 2005 क्वेरी पर। –

+0

@ केन ले: "काम नहीं"? यह कैसे काम नहीं करता है ... – gbn

+0

एनवीएम, लेकिन मैंने बाएं आउटटर का उपयोग करने का प्रयास किया और कॉलम को हटा दिया है, इसके काम ... धन्यवाद आपकी मदद tpp, gbn। आपका दिन शुभ हो। –

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