- // 首先我们需要知道我们重复的都有哪些数据,
- // 第一步: 进行对数据表进行分组, group by.
- // 第二步: 进行后通过 having 进行限制筛选, 条数大于等于 2 的
- // 第三步: 进行多表删除.
- // 案例:
- // 第一步, 进行对数据分组, 并通过 having 进行限制筛选, 获得存在重复数据老王, 如下:
- // 第二步, 进行删除, 请仔细看删除语句, 我们把筛选出来的 AS t2 当做子表. 来进行筛选.
例如 id 和 id 的下一位进行比较, 如果 name 相同, 就删除.
- // 请仔细看下面这句代码, 删除的关键
- mysql> delete t1 from ceshi AS t1 left join (select id,name from ceshi group by name having count(name)>=2) as t2 on t1.name = t2.name where t1.id>t2.id;
- Query OK, 2 rows affected (0.10 sec)
- // 删除成功
- // 语句讲解:
- //1, 首先 cheshi 数据表起一个别名为 t1
- //2, 通过子连接来筛选出 ceshi 数据表中相同的数据, 我们用他当做一张新的数据吧, 别名为 t2
- //3, 添加左外连接,
- //4, 然后根据 id 的编号来进行对比, 例如 id=1 的 name 和 id=2 的 name 相同就进行删除.
来源: http://www.bubuko.com/infodetail-2752623.html