sql server 删除重复数据新思路

关于删除重复数据,提供一种新的思路,以前大致只用过group 加 having保留最小行号的数据,

这种理解不够的情况下一时难以想起来sql要如何写,要搜索一下才能写,今天提供一种容易理解,

然后还容易记住的方法,思路:

1.新建一个临时表temp(跟目标表结构一样);

2.给temp加上唯一索引(支持单个或多个字段),忽略重复键(插入数据的时候就跟往Set里面

   写数据一样了,重复的数据直接忽略),语法  如:

   create unique index {unique_words_b} on {words_b}({wordid},{unitid}) with ignore_dup_key

   大括号内的值,分别是:索引名,临时表名,重复字段1,重复字段2;

3.将数据插入temp表:insert into {words_b} select * from {words}

   大括号内的值,分别是:临时表名,目标表名;

4.检查一下,temp表里面是不是只有不重复的数据;

5.删除目标表现有数据,将temp表数据导入目标表,删除临时表

   delete {words}

  insert into {words} select * from {words_b}

  drop table {words_b}

  变量就不再解释了,上面有

总结:跟以往那种方法不同的是,这一种是建立唯一索引,忽略重复键,将操作类比成Set就可以,你尽管写,

   重复了不加进去就是了,要记的东西就是如何创建忽略重复键的索引 ,语法再记一下:

   create unique index {unique_words_b} on {words_b}({wordid},{unitid}) with ignore_dup_key

原文地址:https://www.cnblogs.com/shellphen/p/14059675.html