SqlServer怎么删除重复数据

环境描述:

工作中,我们经常会碰到各种各样奇葩的数据库表设计,碰到后当然免不了鄙视或感叹坑爹云云,但是茶余饭后酒过三巡,还是得蛋疼的接着去处理问题,今天就来蛋疼下SqlServer怎么删除重复数据。


栗子如下:

=================================华丽的分割线==================================

数据库表设计及现有数据(看到了吧,没有自增ID,没有主键,啥都没有。。。):

SqlServer怎么删除重复数据_第1张图片

SqlServer怎么删除重复数据_第2张图片


然后怎么去除重复数据呢??步骤如下:

1.没有自增ID,那我们就给它加吧,反正加了又不会怀孕,放心大胆的加吧,反正也是加,干脆一不做二不休,主键自增统统上。

SqlServer怎么删除重复数据_第3张图片


2.加了主键自增ID之后,我们来看下现在的数据(哎呦我擦嘞,sqlserver好神奇,ID的值直接自动加上了,不禁感叹一声“噢耶”):

SqlServer怎么删除重复数据_第4张图片


3.既然每行唯一标识都有了,想来剩下的步骤各位看官肯定妥妥的晓得该怎么做了,如果还是不晓得的话,那请继续往下看:

咱们直接通过SQL查询出去重后的结果集

SELECT MAX(id) as '最大标识ID',cc,name FROM [CustomerManage].[dbo].[test1] group by cc,name

SqlServer怎么删除重复数据_第5张图片


4.既然需要的结果集我们已经找到了,那其余的杂七杂八数据我们就直接干掉它:

运行如下SQL  

delete from [CustomerManage].[dbo].[test1]  where Id not in 
  (
  SELECT  MAX(id)
  FROM [CustomerManage].[dbo].[test1]
  group by cc,name
  )

查看结果集,果然看起来顺眼多了,老鼠屎都木有了。

SqlServer怎么删除重复数据_第6张图片


5.看到这里,各位看官肯定说,你妹的,怎么还没完,不是TM都删完了吗?嘿嘿,各位看官啊,你们可真是太单纯了,我们一定要秉承着负责任的态度去为客户办事啊,万一客户嫌我们私自给人家纯洁的数据库表加了一个字段,影响了人家的性能神马的,我们小小程序猿可承担不起这个巨大的风险啊。我们还是乖乖的把我们刚刚上面添加的主键自增ID干掉吧。

右键表>>设计>>右键Id列>>删除主键,删除列

删完之后查看结果集,恩恩,果然看起来一如既往的舒服

SqlServer怎么删除重复数据_第7张图片


6.好吧好吧,没有了,这回真没有了,各位,,,山水有相逢,拜拜了您呐。。。

你可能感兴趣的:(SqlServer)