mysql 创建唯一索引前 删除重复数据只保留id最小一条。
来源:互联网 发布:深圳远望数码淘宝 编辑:程序博客网 时间:2024/05/19 19:30
首先,现在的需求是:
表A有5个字段A1,A2,A3,A4,A5。
现在的唯一索引是A1+A2;因为业务的调整,需要改成A3+A4。
解决办法:
1、第一步很简单,先drop掉原unique索引:A1+A2。
2、第二步,创建新unique,直接创建,想当然的报错,存在重复数据。
因此,需要第三步:
3、删除重复数据,只保留ID最小的一条:
大致思路时,找到那些A3+A4都重复数据中,保留id最小的记录。
因此sql可以分两部分:
第一部分,根据A3+A4 in (重复数据);
第二部分,并且id not in (重复数据的min(id))
这里需要加上别名:
比如:
delete from A where A3 in(
select * from (
SELECT min(id) from A group by A3,A4
having count(A3) > 1 ) tem
);
到这里,差不多可以手工了
由于业务需要,暂时不需要clinet_id作为唯一索引了,需要改为account_id, address, message_date,还要删除重复记录,下面语句为
delete from t_cloud_message where message_date in(select * from (SELECT max(message_date) from t_cloud_message group by account_id, address, message_date having count(message_date) > 1 ) tem);
0 0
- mysql 创建唯一索引前 删除重复数据只保留ID最小一条。
- mysql 创建唯一索引前 删除重复数据只保留id最小一条。
- mysql删除重复数据只保留id最大一条记录
- mysql删除重复数据只保留一条
- mysql 删除重复数据只保留一条
- mysql 删除重复数据只保留一条
- mysql 删除重复数据只保留一条
- mysql删除重复数据只保留一条
- 【mysql】删除重复数据只保留一条
- mysql将普通索引更改为唯一索引,且对重复的数据只保留一条
- Mysql删除重复记录,保留id最小的一条
- mysql 删除重复数据只保留一条记录
- mysql删除重复记录只保留一条数据
- MySQL删除重复数据行,只保留一条
- mysql 删除重复数据只保留一条sql
- MySQL中删除重复数据只保留一条
- MySQL中删除表中重复数据,只保留一条
- MySQL中删除重复数据只保留一条
- linux shell翻译英文脚本
- 基于补偿原理的正激式变换器传导共模EMI抑制
- unity引擎简介——(1)Unity3D游戏开发流程与规范
- select函数(linux C语言)
- caffe中的数据流通过程
- mysql 创建唯一索引前 删除重复数据只保留id最小一条。
- 第15周 oj Problem D: C语言习题 字符串长度
- 一次大数据量日志存储升级改造
- engineercms利用webuploader批量添加成果
- 基于ACF多通道特征的人脸检测——从原理到实现
- curator-recipes 低版本 导致的codis加载异常
- lintcode55:比较两个字符串A和B,确定A中是否包含B中所有的字符。
- 春秋争霸第四关
- socket通信