• 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

  • 相关阅读:
    MySQL 5.7 在windows下修改max_allowed_packet变量
    linux(redhat)安装jdk1.8
    linux安装jdk1.8之后报错Error: dl failure on line 893的解决办法
    Java中List Set Map 是否有序等总结
    面试题吐槽系列之一
    面试算法——快速排序
    推荐系统——online(上)
    推荐系统架构
    零基础开始推荐系统
    视觉显著性优秀硕士论文总结
  • 原文地址:https://www.cnblogs.com/shellphen/p/14059675.html
Copyright © 2020-2023  润新知