例:

1、创建学生表

1 CREATE TABLE student(
2     id INT PRIMARY KEY,
3     stuno VARCHAR(12) NOT NULL,
4     stuname VARCHAR(30) NOT null
5 );

2、向学生表中插入数据

1 INSERT INTO student VALUES ('1','131111099','小李');
2 INSERT INTO student VALUES ('2','131111100','小陈');
3 INSERT INTO student VALUES ('3','131111101','小王');
4 INSERT INTO student VALUES ('4','131111102','小黑');
5 INSERT INTO student VALUES ('5','131111099','小曹');
6 INSERT INTO student VALUES ('6','131111099','小李');

3、查找仅学号重复的记录

从插入记录上看,id为1、5、6的记录学号都是相同的,那么验证一下查询的数据是否正确

1 -- 学号重复
2 -- 先按学号进行分组,然后查询学数量 > 1的记录的学号
3 SELECT * FROM student WHERE stuno IN (
4     -- 查找重复的学号
5     SELECT stuno FROM student GROUP BY stuno HAVING COUNT(stuno) > 1
6 );

查询结果如下:

查询结果和我们事先分析的数据一致,所以查询结果是正确的。

4、查找学号和姓名均重复的记录

从插入记录上看,只有id为1、6的记录学号和姓名是完全重复的,那么验证一下查询的数据是否正确

1 -- 学号和姓名均重复
2 SELECT * FROM student WHERE (stuno,stuname) -- 注意:此处一定要加括号,当成联合字段来处理
3  IN (
4     -- 查找学号和姓名均重复的学生信息
5     SELECT stuno,stuname FROM student GROUP BY stuno,stuname HAVING COUNT(1) > 1
6 );

查询结果如下:

查询结果和我们事先分析的数据一致,所以查询结果是正确的。

5、删除多余的重复记录(多个字段),只保留最小id的记录

重复记录可能有多条,但是我们只希望保留id最小的那条记录,因为学号和姓名均重复的只有id为1、6的记录,保留id为1的记录,那么验证一下查询的数据是否正确

 1 -- 删除多余的重复记录(多个字段),只保留最小id的记录2 DELETE FROM student WHERE id IN (3     SELECT * FROM (4         SELECT id FROM student WHERE (stuno,stuname) -- 注意:此处一定要加括号,当成联合字段来处理5         IN (6             -- 查找学号和姓名均重复的学生信息7             SELECT stuno,stuname FROM student GROUP BY stuno,stuname HAVING COUNT(1) > 18         ) AND id NOT IN (9             -- 查询最小id的记录
10             SELECT MIN(id) FROM student GROUP BY stuno,stuname HAVING COUNT(1) > 1
11         )
12     ) AS stu_repeat_copy
13
14 );

查询结果如下:

可以看出,id为6的记录已经被删除了,所以结果正确

警告:不能根据本表的查询结果来更新本表的数据

在其它的帖子中有看到如下写法来删除重复数据:

1 DELETE FROM student WHERE (stuno,stuname) -- 注意:此处一定要加括号,当成联合字段来处理
2     IN (
3         -- 查找学号和姓名均重复的学生信息
4         SELECT stuno,stuname FROM student GROUP BY stuno,stuname HAVING COUNT(1) > 1
5     ) AND id NOT IN (
6         -- 查询最小id的记录
7         SELECT MIN(id) FROM student GROUP BY stuno,stuname HAVING COUNT(1) > 1
8 );

会报如下错误:

  [Err] 1093 - You can't specify target table 'student' for update in FROM clause

MySQL查询和删除重复记录相关推荐

  1. mysql删除重复文章标题_MySQL中查询、删除重复记录的方法大全

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: 一.查找重复记录 1.查找全部重复记录 2.过滤重复记录( ...

  2. mysql删除重复的判断_MySQL中查询、删除重复记录一共有多少种方法?

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: select title,count(*) as coun ...

  3. mysql去掉两个最高分_MySQL中查询、删除重复记录的方法大全

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: select title,count(*) as coun ...

  4. mysql删除重复记录语句的方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-06-21 我要评论 查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的。 . .

    mysql删除重复记录语句的方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-06-21 我要评论 查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的. 例如: id name ...

  5. MySQL的查询及删除重复记录

    查询及删除重复记录的方法 (一) 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (sele ...

  6. 在 MySQL 数据库中删除重复记录的步骤

    在 MySQL 数据库中删除重复记录的步骤 当我们在处理数据库中的数据时,有时候会出现重复记录的情况,这些重复记录会影响数据的正确性,需要将其删除.下面是在 MySQL 数据库中删除重复记录的步骤: ...

  7. [SQL]查询及删除重复记录的SQL语句

    一:查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (sel ...

  8. MySQL中查询、删除重复记录的方法大全

    查找所有重复标题的记录: select title,count(*) as count from user_table group by title having count>1; SELECT ...

  9. mysql查询删除重复记录查询_mysql怎么查询和删除重复记录

    查找所有重复标题的记录: SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > ...

最新文章

  1. 【J2SE】java概述
  2. 深入理解Java Class文件格式
  3. 力扣100. 相同的树(JavaScript)
  4. centos7 如何重启web服务_如何重启web服务器
  5. 这台计算机没有连接到网络怎么办,如果计算机连接到路由器并且没有互联网,该怎么办...
  6. 38. 遵循按照值传递的原则来设计函数子类
  7. MySQL数据库优化的八种方式(总结)
  8. Mugeda(木疙瘩)H5案例课—接东西H5小游戏-岑远科-专题视频课程
  9. JavaWeb的学习(上)
  10. 移动流量转赠给好友_中国移动怎样转赠手机流量?月结流量用不完怎办
  11. openCV: 利用python和cv2绘出一个笑脸
  12. DATE_ADD() 函数使用
  13. 背景图片和颜色混合叠加多种混合模式
  14. 手机号码段简介以及最新手机号段归属地数据库(2018年7月1日)
  15. html下拉框动态增加成员,JavaScript实现左右下拉框动态增删示例
  16. 电脑安装android办公,办公室上班族的福利,在电脑上玩安卓系统
  17. java接入短信平台源码
  18. Android高级工程师面试实战,您会挂么?
  19. 创新是企业持续发展的动力
  20. 计算机专业成长计划书,计算机专业学习计划书

热门文章

  1. 在计算机科学中 算法这个术语是指什么,algorithm
  2. 金蝶K/3产品性能稳定性优化指导手册
  3. (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  4. Proteus 8 Source Code 字体设置问题 光标于选中的字不对应
  5. RPC(远程过程调用)详解
  6. oppo SDK接入
  7. 【详解】位运算符:位逻辑运算符,位移运算符(<<左移,>>右移)
  8. 【网红流水线车间】“制造”李佳琦们的神秘组织,到底是怎么让网红火起来的?...
  9. qt base64加解密
  10. 儿童学计算机编程好处,儿童编程课学了有好处吗?4大优势家长要知道