mysql 删除重复数据只保留一条
来源:互联网 发布:linux rpm是什么意思 编辑:程序博客网 时间:2024/04/28 18:05
DELETE FROM 表名 WHERE ID IN (
SELECT * FROM
(SELECT MAX(ID) FROM 表名 WHERE ... GROUP BY MSG HAVING COUNT(MSG) > 1)
AS b);
注意事项:MSG为重复字段 ID一定要是 唯一字段 ,如果ID代表的重复字段 那么就删除了所有的数据,BE CARE
上面这句SQL:有一点问题 不知道大家发现没有 这句SQL只会删除重复数据中ID最大的一条 也就是说有3条重复数据的话 就删除最后插入的那一条。
谢谢 网友的评论 让我纠正这些错误。
下面是正确版本:
思想:删除所有重复字段 保留重复字段中最早插入的
DELETE FROM TABLE_NAME WHERE MSG IN (
SELECT * FROM
(SELECT MSG FROM TABLE_NAME WHERE FLAG = 3 GROUP BY MSG HAVING COUNT(MSG) > 1)
AS b)
AND ID NOT IN (SELECT * FROM
(SELECT MIN(ID) FROM TABLE_NAME WHERE FLAG = 3 GROUP BY MSG HAVING COUNT(MSG) > 1)
AS c)
TABLE_NAME:表名
MSG:重复字段
SELECT * FROM
(SELECT MAX(ID) FROM 表名 WHERE ... GROUP BY MSG HAVING COUNT(MSG) > 1)
AS b);
注意事项:MSG为重复字段 ID一定要是 唯一字段 ,如果ID代表的重复字段 那么就删除了所有的数据,BE CARE
上面这句SQL:有一点问题 不知道大家发现没有 这句SQL只会删除重复数据中ID最大的一条 也就是说有3条重复数据的话 就删除最后插入的那一条。
谢谢 网友的评论 让我纠正这些错误。
下面是正确版本:
思想:删除所有重复字段 保留重复字段中最早插入的
DELETE FROM TABLE_NAME WHERE MSG IN (
SELECT * FROM
(SELECT MSG FROM TABLE_NAME WHERE FLAG = 3 GROUP BY MSG HAVING COUNT(MSG) > 1)
AS b)
AND ID NOT IN (SELECT * FROM
(SELECT MIN(ID) FROM TABLE_NAME WHERE FLAG = 3 GROUP BY MSG HAVING COUNT(MSG) > 1)
AS c)
TABLE_NAME:表名
MSG:重复字段
ID:唯一字段
WHERE FLAG = 3:条件可去掉
0 0
- mysql删除重复数据只保留一条
- mysql 删除重复数据只保留一条
- mysql 删除重复数据只保留一条
- mysql 删除重复数据只保留一条
- mysql删除重复数据只保留一条
- 【mysql】删除重复数据只保留一条
- mysql 删除重复数据只保留一条记录
- mysql删除重复记录只保留一条数据
- MySQL删除重复数据行,只保留一条
- mysql 删除重复数据只保留一条sql
- MySQL中删除重复数据只保留一条
- MySQL中删除表中重复数据,只保留一条
- MySQL中删除重复数据只保留一条
- MySQL中删除重复数据只保留一条
- mysql删除重复数据只保留id最大一条记录
- MySQL中删除重复数据只保留一条
- mysql 删除表中重复的数据,只保留一条
- MySQL中删除重复数据只保留一条
- Android 性能优化:使用 Lint 优化代码、去除多余资源
- Android如何实现倒计时功能
- 关于gravity属性引发的大问题
- poj1759 Garland二分
- java.lang.Long cannot be cast to java.lang.Integer解决方案
- mysql 删除重复数据只保留一条
- mongo与mysql的语法区分
- GeekBand c++有感
- Java自定义注解
- 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用
- PO、VO、DTO、POJO以及JavaBean介绍
- java 注解
- android_52_启动服务
- JVM加载class文件的原理机制