1. DELETE FROM TABLE_NAME WHERE ID NOT IN (SELETE MIN(ID) FROM TABLE_NAME GROUP BY COLUMN1),这种方法有限制条件,列ID必须是自增列
2. 适用于Sql Server 2005以上的版本,此方法效率最高,速度最快
WITH
TAB1 AS (SELECT ROW_NUMBER() OVER (PARTITION BY COLUMN1,COLUMN2 ORDER BY COLUMN1,COLUMN2 ) AS rn ,* FROM TABLE_NAME)
DELETE FROM TAB1 WHERE TAB1.RN > 1
这种方法使用了Sql Server 2005 的ROW_NUMBER()特性,将相同的记录进行自增编号,如果有重复数据则编号就会大于1。
关于ROW_NUMBER()的用法还有很多,大家如果想知道,可以去看看SQL Server2005的内置函数,有很多比较实用的东西。