zoukankan      html  css  js  c++  java
  • mysql 删除重复数据 建立联合唯一索引

    由于之前设计表考虑不周导致存在重复数据,需要建立唯一索引失败,所以需先删除重复数据!

    本例中,需要建立用户和门禁的联合唯一索引

    1.先查询所有的重复数据

    SELECT
    *
    FROM
    `user_accesscontrol_auth`
    WHERE
    ( `user_name`, `access_control_id` ) IN ( SELECT `user_name`, `access_control_id` FROM `user_accesscontrol_auth` GROUP BY `user_name`, `access_control_id` HAVING COUNT( 1 ) > 1 );

    以上查询都是重复的记录!

    2. 将重复的条目中ID更大的所有条目都删除,只留ID最小的那一个。(29万数据量,912条重复记录)

    DELETE FROM `user_accesscontrol_auth`
    WHERE (`user_name`, `access_control_id`) IN (SELECT `user_name`, `access_control_id` FROM (SELECT * FROM `user_accesscontrol_auth`) a GROUP BY `user_name`, `access_control_id` HAVING COUNT(1) > 1)
    AND `id` NOT IN (SELECT MIN(`id`) FROM (SELECT * FROM `user_accesscontrol_auth`) b GROUP BY `user_name`, `access_control_id` HAVING COUNT(1) > 1);

    删除重复记录保留一条:https://mp.weixin.qq.com/s/4ua_YF-Jbc89SA75Z9tNgg

    3.数据删除成功后可建立user_name 和 access_control_id的联合唯一索引

  • 相关阅读:
    地址路由使用
    SpringMVC的各种参数绑定方式
    SpringMVC 的 Controller 返回各种视图的处理方式
    jQuery过滤选择器:not()方法使用介绍
    js数组的操作
    ligerui grid行编辑示例
    ilter()和find()的区别
    java 文件字节输出流
    java 文件字节输入流
    java 创建一个File文件对象
  • 原文地址:https://www.cnblogs.com/weixy3/p/13815887.html
Copyright © 2011-2022 走看看