MySQL删除表中多余的重复记录,只保留一条记录
来源:互联网 发布:金庸群侠传x数据上限 编辑:程序博客网 时间:2024/05/17 23:54
1、查询重复记录
SELECT * FROM 表名WHERE 重复字段 IN (SELECT 重复字段 FROM 表名 GROUP BY 重复字段 HAVING COUNT(重复字段)>1);
2、删除重复记录,但保留一条
DELETE FROM 表名WHERE 重复字段 IN (SELECT 重复字段 FROM 表名 GROUP BY 重复字段 HAVING COUNT(重复字段)>1) AND Id NOT IN (SELECT MIN(id) FROM 表名 GROUP BY 重复字段 HAVING COUNT(重复字段)>1);
3、案例
数据准备
CREATE TABLE T_Person(pId INT PRIMARY KEY AUTO_INCREMENT,pName VARCHAR(20));INSERT INTO T_Person(pName) VALUES('陈一');INSERT INTO T_Person(pName) VALUES('黄二');INSERT INTO T_Person(pName) VALUES('张三');INSERT INTO T_Person(pName) VALUES('张三');INSERT INTO T_Person(pName) VALUES('李四');INSERT INTO T_Person(pName) VALUES('李四');INSERT INTO T_Person(pName) VALUES('王五');INSERT INTO T_Person(pName) VALUES('赵六');INSERT INTO T_Person(pName) VALUES('赵六');INSERT INTO T_Person(pName) VALUES('钱七');INSERT INTO T_Person(pName) VALUES('王五');INSERT INTO T_Person(pName) VALUES('李四');INSERT INTO T_Person(pName) VALUES('孙八');INSERT INTO T_Person(pName) VALUES('杨九');INSERT INTO T_Person(pName) VALUES('张三');INSERT INTO T_Person(pName) VALUES('吴十');SELECT * FROM T_Person;
上面共16条数据,查看包含重复姓名的记录都有哪些?
SELECT pName FROM T_Person GROUP BY pName HAVING COUNT(pName)>1;
情况1和情况2都是原来的16条数据的基础上做的。
情况1:删除所有重复数据,SQL语句如下:
DELETE FROM T_PersonWHERE pName IN (SELECT pName FROM (SELECT pName FROM T_Person GROUP BY pName HAVING COUNT(pName)>1 ) AS temp);
情况2:重复的数据只留一条,其它重复数据删除,SQL语句如下:
DELETE FROM T_PersonWHERE pName IN (SELECT pName FROM (SELECT pName FROM T_Person GROUP BY pName HAVING COUNT(pName)>1 ) AS temp) AND pId NOT IN( SELECT pId FROM (SELECT MIN(pId) AS pId,pName FROM T_Person GROUP BY pName HAVING COUNT(pName)>1 ) AS temp2);
转载 :http://lsieun.blog.51cto.com/9210464/1813903
0 0
- MySQL删除表中多余的重复记录,只保留一条记录
- sql 删除表中多余的重复记录(多个字段),只保留一条记录
- sql 删除表中多余的重复记录(多个字段),只保留一条记录
- sql 删除表中多余的重复记录(多个字段),只保留一条记录
- 删除表中重复的记录,只保留一条
- MySQL删除重复记录只保留一条
- MySQL删除重复记录只保留一条
- MySQL删除重复记录只保留一条
- MySQL删除重复记录只保留一条
- mysql删除重复记录,只保留一条。
- mysql 删除表中的重复记录,只保留其中一条
- mysql删除无主键表中重复记录(只保留一条记录)
- MySQL删除没有主键的表中的重复记录,只保留一条记录
- mysql 删除重复数据只保留一条记录
- mysql删除重复记录只保留一条数据
- mysql删除重复记录并只保留一条
- mysql删除重复数据只保留id最大一条记录
- mysql 删除重复数据只保留一条记录
- maven 打包jar文件(含可执行jar包)
- android4.4.2 短信广播变更
- JSON.parse()和JSON.stringify()
- dwz 框架参数传递
- 一些常见的AAC编解码库
- MySQL删除表中多余的重复记录,只保留一条记录
- 设计模式——访问者模式
- 怎么样使用yum来安装mysql
- 【ife】任务十一:移动Web页面布局实践
- SSL JudgeOnline 1194——最佳乘车
- Intermediate Core Graphics(Swift)三
- 状态模式
- 用Python进行梯度提升算法的参数调整
- mac 如何禁止 Google Chrome 自动更新