本站承诺永不接任何虚假欺骗、联盟广告、弹窗广告、病毒广告、诱导充值等影响用户体验的广告,广告屏蔽插件会影响本站部分功能,还请不要屏蔽本站广告,感谢支持!

当前位置:首页 / 正文

2021-06-28 | 编程技术 | 5306 次阅读 | 等你评论 | 0 次点赞 | 繁体

问题引入

假设一个场景,一张用户表,包含 3 个字段:id,identity_id,name。
现在身份证号 identity_id 和姓名 name 有很多重复的数据,需要删除多余数据只保留一条有效数据。

模拟环境

1、登入 mysql 数据库,创建一个单独的测试数据库 mysql_exercise

create database mysql_exercise charset utf8;

2、创建用户表 users

create table users(
    id int auto_increment primary key,
    identity_id varchar(20),
    name varchar(20) not null
);

3、插入测试数据

insert into users values(0,'620616199409206512','张三'),
                        (0,'620616199409206512','张三'),
                        (0,'62062619930920651X','李四'),
                        (0,'62062619930920651X','李四'),
                        (0,'620622199101206211','王五'),
                        (0,'620622199101206211','王五'),
                        (0,'322235199909116233','赵六');

可以多执行几次,生成较多重复数据。

图片alt

4、解决思路

(1)根据身份证号和 name 进行分组;
(2)取出分组后的最大 id(或最小 id);
(3)删除除最大(或最小)id 以外的其他字段;

方法一:

delete from users where id not in (
    select t.max_id from
    (select max(id) as max_id from users group by identity_id,name) as t);

图片alt

成功将重复的数据删除,只保留了最后一次增加的记录。同理也可以保留第一次添加的记录(即删除每个分组里面除最小 id 以外的其他条记录)

方法二:

delete p1 from users as p1,users as p2
where p1.identity_id = p2.identity_id and p1.name = p2.name and p1.Id > p2.Id;

via

mysql数据库删除重复的数据保留一条_生有涯,知无涯-CSDN博客
https://blog.csdn.net/qq_38923792/article/details/95240733

标签: mysql骚操作

猜你喜欢
薅京东羊毛必备抓取Cookies教程
本文只介绍如何利用安卓手机浏览器获取京东 cookie 教程,具体为什么要获取 cookie 以及如何薅羊毛请查看:闲置服务器薅京东的羊毛—青龙面板部署与京东签到第一步,下载工具去各大应用商店搜...
白嫖移动,联通,电信手机短信通知
无论在生活中或者工作中,对于一些比较紧急的事情,可能需要发送个通知!比如:自建的服务器突然宕机,如何自动发短信通知运维主管?后台服务日志大量报错如何第一时间发短信通知码农geigei?类似的情景...
通用的检测到广告屏蔽插件进行弹窗提示实现方法
用的 js 方法来检测,按理说所有博客都能使用,就是在打开网页的时候进行一次判断。如果发现没有加载广告代码,就会出来一个弹窗来提示浏览者将本站加到广告拦截插件的白名单里面。别喷我,个人站长经营实...
如何找回微信已过期文件教程
现在基本人人都会使用微信,微信里面保存着很多文件。但是过段时间去看,你可能由于当时没有保存或者根本就没有点开过,微信文件名称显示红色,这表示已经过期了。难道我们要再问别人重发一遍吗?这可能会有点...
局域内网的服务器利用个人电脑做跳板机访问互联网
公司内网的服务器均不连公网(互联网),问题来了:现在服务器上需要安装一些软件怎么办?目前一般都是编译安装!先将软件在外网机器上下载好,然后再复制到服务器内,编译安装!这种方式缺点就是比较麻烦,编...
ssh-chat- SSH命令行下聊天摸鱼服务
ssh-chat 是一个使用 Go 语言编写的定制 SSH 服务器,当你连到该服务器时就会进入聊天模式,就好像以前的终端 BBS 系统一样。官方 Github: https://github.c...
Python小技巧之不用GUI,照样实现图形界面
小王平常的工作是做数据处理的,手中自然握有大量的数据,在日常工作中经常需要根据业务的需求提取相应的数据,有些需求是固定的,写好脚本之后只要定期提取数据就行了。但是,像我这么懒的人,这种工作怎么可...
Mysql 数据库导入导出比较快的方式
1、备份原来数据库表结构,在新库中恢复表结构,必须跟原库一模一样,包括索引等。 2、在原库上flush table,会生成一个cfg文件 ``` SELECT CONCAT( 'flu
Navicat Premium 15.0.21 破解 Windows64位
Navicat 是一套快速、可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面
Linux 下安装 Elasticsearch
![](https://cdn.wangtwothree.com/imgur/FfW6pWR.png) # 说明 Elasticsearch 就不过多介绍了,可以自行百度或者查看上一篇文章《[wi
javascript | 原生JS多语言切换简单实现
由于项目需要实现一个前端的多语言切换,不想因为一个简单的功能就引入 jQuery,所以经过 google 编程大法摸索出一个原生 JS 就可以实现的多语言前端切换的小例子,仅供参考。 ![图片a
(首次提交评论需审核通过才会显示,请勿重复提交)