SQL删除逻辑重复记录的方法

SQL删除逻辑重复记录的方法

问题:对于表 TestData : ID, DataID, A,B,C,需要删除DataID重复的记录,仅保留第一条。 ID为Int型主键。

delete * from TestData

where ID not in

(

select Min(ID) from TestData

group by DataID

)

解答:大容量记录删除时,我这样写:

delete *

from TestData

Inner Join

(select [Type]), Min(ID) as MinID from TestData group by [Type]) T

On TestData.[Type])=T.[Type])

Where TestData.ID>T.MinID