原始数据:
Table1
ID Name
-----------------------
1 a
2 b
3 a
4 c
5 b
需要数据:
Table1
ID Name
-----------------------
1 a
2 b
4 c
开始:
DELETE FROM TABLE1 WHERE ID IN (
SELECT ID FROM (
SELECT ID, RANK OVER(PARTRITION BY NAME ORDER BY ID) AS RankNumber FROM TABLE1
WHERE RankNumber<>1) -- 根据name分组,在组内设置等级编号,保留第一条,其他删掉
)
该SQL语句未经实际运行.但是原理为使用RANK OVER和PARTRITION关键字是不会错的,如果运行有问题请去msdn查阅相关资料