如何删除具有一个唯一列的重复记录

How to delete duplicate record which has one unique column

我有一个table这样的。

如何删除月值较大的记录 "Jimmy" 和 "Kenneth"。

谢谢。

delete from tablename t1 where exists (select 1 from tablename t2
                                       where t1.name = t2.name
                                         and t1.month > t2.month)

但是为什么不考虑年份呢?为什么不使用日期数据类型? 如果同一个月有两个吉米怎么办? 如果不允许重复,为什么没有唯一约束?

使用CTE删除重复记录

;with cte as
(
select Rn=row_number()over(partition by name,post order by month ASC),* 
from yourtable 
)
delete from cte where rn>1

如果月份是一列数字,试试这个:

DELETE table
WHERE  month = (SELECT Max(month)
                FROM   table
                WHERE  name = 'Jimmy')
       AND name = 'Jimmy';

DELETE table
WHERE  month = (SELECT Max(month)
                FROM   table
                WHERE  name = 'Kenneth')
       AND name = 'Kenneth'; 

您可以使用over partition来分隔月份中的最大值:

SELECT *
FROM   (SELECT *,
               Row_number()OVER(PARTITION BY name, Post
                   ORDER BY Month DESC) AS RowNumber
        FROM   TABLE)
WHERE  rownumber = 1 

使用此代码..

WITH tblTemp as(SELECT ROW_NUMBER() Over(PARTITION BY Name,Post ORDER BY Name)As RowNumber,* FROM <table_name>)DELETE FROM tblTemp where RowNumber >1