mysql删除重复数据只保留一条

来源:互联网 发布:ubuntu如何接入pppoe 编辑:程序博客网 时间:2024/04/28 16:15

简述

最近在做一个项目,涉及到需要同步远端数据库的数据到本地,由于误操作导致数据库里面的数据出现重复(冗余)ps: 由于数据量比较大,最后发现冗余了几万条记录so 手动删除,呵呵// 下面将以简单的例子来说明下如何处理这个 case

举个栗子

以mysql数据库为例:在数据库中建立数据表 [prefix_]article// 冗余表现在aid这列上,部分值出现了重复另外,主要是考虑到想在aid上建立一个唯一的索引,也实现部分查询优化id aid1  12  23  34  35  46  47  48  59  510 6......
-- aid 建立 unique indexcreate unique index article_aid_unique on article(aid);

问题分析

在mysql命令行中执行上面的sql语句,将报有重复值在aid列的错误,导致unique index 无法建立,原因很简单aid列有重复值存在需要做的是:处理数据表的数据,删除重复的数据只保留一条

问题处理

-- 思路:prefix_article自身连接,根据相同的aid匹配,然后根据主键id过滤, 形成并列的and条件,删除即可delete a1 from prefix_article a1, prefix_article a2 where a1.aid = a2.aid and a1.id > a2.id;-- 注意这个小于号也是可以的delete a1 from prefix_article a1, prefix_article a2 where a1.aid = a2.aid and a1.id < a2.id;

ps

-- sql distinct 语法select count (distinct aid) from article;
0 0
原创粉丝点击