sqlserver 删除表中重复的数据

--在删除之前可以先查看一下结果:
SELECT max(主键ID),列1,列2...列n FROM [TABLE表] group by 列1,列2...列n

--删除重复的数据,保留主键最大的那条数据(如果需要保留主键最小的数据,则是:min(主键ID) ...)
delete from [TABLE表] where [主键ID] NOT IN (SELECT max(主键ID) FROM [TABLE表] group by 列1,列2...列n)--注: 删除除了最大主键ID以外的所有的数据

举个栗子,有表及数据如下(共10条):

sqlserver 删除表中重复的数据_第1张图片

查看我需要的结果(共3条):

sqlserver 删除表中重复的数据_第2张图片

保留ID为8、9、10的数据,删除其他的数据(共删除7条):

sqlserver 删除表中重复的数据_第3张图片

 验证去掉重复后的结果(共3条):

sqlserver 删除表中重复的数据_第4张图片

核心代码: 

--删除重复的数据
DELETE FROM [Student] WHERE ID NOT IN
(SELECT max([ID])[ID] FROM [Student] group by [Name],[Age])

你可能感兴趣的:(SQL代码,sqlserver,数据库)