1.创建测试表,并插入数据

create table test(
id int(11) primary key auto_increment comment '用户编号',
username varchar(20) comment '用户名',
phone char(11) comment '手机号码',
add_time int(11) comment '注册时间',
)engine=innodb default charset=utf8;
insert into test(username,phone) values('a','13545885556'),('b',15456768789),('a','13545885556'),('b',15456768789),('c','14545574857'),('a','13545885556');

数据如下:

+----+----------+-------------+----------+
| id | username | phone | add_time |
+----+----------+-------------+----------+
| 1 | a | 13545885556 | NULL |
| 2 | b | 15456768789 | NULL |
| 3 | a | 13545885556 | NULL |
| 4 | b | 15456768789 | NULL |
| 5 | c | 14545574857 | NULL |
| 6 | a | 13545885556 | NULL |
+----+----------+-------------+----------+

2.根据username分组,然后查找出id最大的。就是我们要保留的数据。

SELECT username,MAX(id) FROM test GROUP BY username;

查询结果

+----------+---------+
| username | MAX(id) |
+----------+---------+
| a | 6 |
| b | 4 |
| c | 5 |
+----------+---------+

3.接下来删除掉不包含这些id的记录

DELETE FROM test WHERE id NOT IN (SELECT t.xid FROM (SELECT MAX(id) AS xid FROM test GROUP BY username)t);

其实还有许多其它的方法,有什么写的不妥的地方,欢迎大家指教!

mysql删除表中重复记录的更多相关文章

  1. MSSQL sql server 2005/2008 row_number()函数应用之–删除表中重复记录,只保留一条不重复数据

    转自:http://www.maomao365.com/?p=4942 下文主要讲述:重复数据只获取一条的方法 row_number函数在数据库中的功能是为每一行 按照一定的规则生成一个编号,我们常常 ...

  2. SqlServer删除表中重复记录

    重复记录:有两个意义上的重复记录 一是完全重复的记录,也即所有字段均重复的记录: 二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略. 1.对于第一种重复,比较容易 ...

  3. sql记录去重(SQL查询或者删除表中重复记录)

    .查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select*from people where peopleIdin (select peopleIdfrom peopl ...

  4. mysql删除表中的记录

    大家都知道,在MySQL中删除一个表中的记录有两种方法,一种是DELETE FROM TABLENAME WHERE... , 还有一种是TRUNCATE TABLE TABLENAME. DELET ...

  5. Oracle通过ROWID删除表中重复记录

    -- 1 通过ROWID删除T1表里重复的记录    SELECT ROWID,A,B--DELETE FROM  T1WHERE ROWID IN (  SELECT RD  FROM  (     ...

  6. mysql删除表中重复数据,只保留一个最小的id的记录

    语句: delete from table1 where id not in (select minid from (select min(id) as minid from table1 group ...

  7. 使用oracle删除表中重复记录

    (1)使用用rowid方法 查询重复数据:select * from person a where rowid !=(select max(rowid) from person b where a.c ...

  8. sql删除表中重复记录只保留一条记录

    最终代码 update T_Fee set gzl_dfg_op = 'delete' where MetReadRecordID in ( select MetReadRecordID from T ...

  9. Sql Server删除数据表中重复记录 三种方法

    本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1 ...

  10. java mysql删除表中多余的重复记录(多个字段),只留有id最小的记录

    mysql 删除表中多余的重复记录(多个字段),只留有id最小的记录 DELETE FROM 表1 f WHERE (f.字段1,f.字段2) IN ( SELECT 字段1,字段2 FROM 表1 ...

随机推荐

  1. 通义千问预体验,如何让 AI 模型应用“奔跑”在函数计算上?

    立即体验基于函数计算部署通义千问预体验: https://developer.aliyun.com/topic/aigc_fc AIGC 浪潮已来,从文字生成到图片生成,AIGC 的创造力让人惊叹,更 ...

  2. 如何使用chatgpt编写代码

    功能列举 回答编程问题 我想让你充当 Stackoverflow 的帖子.我将提出与编程有关的问题,你将回答答案是什么.我希望你只回答给定的答案,在没有足够的细节时写出解释.当我需要用英语告诉你一些事 ...

  3. 基于Html+腾讯云播SDK开发的m3u8播放器

    周末业余时间在家无事,学习了一下腾讯的云播放sdk,并制作了一个小demo(m3u8播放器),该在线工具是基于腾讯的云播sdk开发的,云播sdk非常牛,可以支持多种播放格式. 预览地址 m3u8pla ...

  4. 13-Verilog for Design

    Verilog for Design 设计人员知道写的RTL可以综合成么样的电路 设计人员对于硬件系统进行描述 验证人员搭建验证环境对设计人员描述的硬件系统进行验证 对Standcell,模拟/定制I ...

  5. 【MicroPython】要是找不到某个函数的定义,可能是做了宏转换

    转换宏 map查找接口

  6. [转帖]Oracle JDBC中的语句缓存

    老熊 Oracle性能优化 2013-09-13 在Oracle数据库中,SQL解析有几种: 硬解析,过多的硬解析在系统中产生shared pool latch和library cache liatc ...

  7. [转帖]jmeter命令大全(命令行模式)

    jmeter命令 --? 打印命令行选项并退出 -h. --帮助 打印使用信息和退出 -v. --版本 打印版本信息并退出 -p. --propfile<argument> 要使用的jme ...

  8. [转帖]Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)

    https://www.cnblogs.com/monjeo/p/12191673.html 权限简介Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方 ...

  9. [转帖]docker 镜像分层原理及容器写时复制

    https://xie.infoq.cn/article/19c98e8b15ff9f610a2ee26bd 一.镜像分层与容器层 在进行docker pull 下载镜像的时候,通过下图可以看到镜像是 ...

  10. [转帖]xsos - Summarize system info from sosreports

    https://github.com/ryran/rsar I'M LOOKING FOR RSAR SCREEN SHOTS INTRO INSTALLATION EXAMPLES IN ACTIO ...