2016-05-13 120 views
0

我有一張表,需要刪除整個行,其中ID出現在第二次和後續時間,但保留第一個出現的suCustomerIDBy。 M表具有作爲主鍵的ID和被複制的CustometID。所以我需要刪除重複的CustomerID的所有行。上述刪除重複多次,但留下第一次出現的ID

Delete From Table1 where ID IN (select ID From Table1 where count(distinct CutomerID) >=2 group by CustomerID) 

的代碼將刪除所有的ID,包括每一標識的第一次出現,但我需要保持他們的第一次出現。請指教。

+1

待辦事項你有另一個獨特的專欄? –

+0

你怎麼知道哪一個是第一個? – Malk

+0

是的,有一個row_id這是一個主鍵 – enigma6205

回答

0

這段代碼應該給你你需要的東西。

可能有更好的方法來做到這一點,如果你能爲表1

提供完整的表模式如果你獲得的行號,然後就忽略了第一批:

;WITH cte 
AS 
(
    SELECT ID, 
    ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS Rn 
    FROM [Table1] 
) 
DELETE cte WHERE Rn > 1 
+0

謝謝。我會嘗試按照我的特殊需要進行調整,並接受您的回答 – enigma6205

0
delete a from(
Select dense_rank() OVER(PARTITION BY id ORDER BY id) AS Rn,* 
from Table1)a 
where a.Rn>1 
+0

儘管此代碼可能會回答問題,但如果提供 關於_why_和/或_how_的附加上下文,則回答問題將顯着提高其長期值 。請[編輯]你的答案,添加一些解釋。 –