mysql数据库去重复

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 参考:http://www.cnblogs.com/duanjie/archive/2011/08/13/2136862.html 说到去重复,感觉逻辑很简单。但动手写起来却并不是那么容易。面试的时候让写sql语句,然后没完整的写出来,然后面试官说你这没结果啊! 去重复首先要把要留下的选出来,然后删除其他重复项。

参考:http://www.cnblogs.com/duanjie/archive/2011/08/13/2136862.html

说到去重复,感觉逻辑很简单。但动手写起来却并不是那么容易。面试的时候让写sql语句,然后没完整的写出来,然后面试官说你这没结果啊!

去重复首先要把要留下的选出来,然后删除其他重复项。distinct虽然好用,但规则不明显。这里采用:select max(id) from user group by 重复依据。

1.取出要留下的数据,本次依据重复项的最大id为保留项。

SELECT id,name,age from person 
WHERE id in(
SELECT MAX(id) from person GROUP BY name,age
);

2.放入临时表

DROP TABLE IF EXISTS temp1;
CREATE TEMPORARY TABLE temp1 SELECT id,name,age from person 
WHERE id in(
SELECT MAX(id) from person GROUP BY name,age
);

3.清空原表并从临时表注入

TRUNCATE person;
INSERT INTO person SELECT * from temp1;
DROP TABLE if EXISTS temp1;
SELECT * from person;

当然也可以直接delete:

DELETE from person WHERE id not in (
	SELECT mid FROM(
		SELECT MAX(id) mid from person GROUP BY name,age
	) t 
)

  





唯有不断学习方能改变! -- Ryan Miao
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
MySQL防止重复插入(数据库层where方法解决)
MySQL防止重复插入(数据库层where方法解决)
25 0
|
9月前
|
SQL 关系型数据库 MySQL
​Mysql数据库查询好慢,除了索引,还能因为什么?
​Mysql数据库查询好慢,除了索引,还能因为什么?
43 0
|
SQL Oracle 关系型数据库
|
关系型数据库 MySQL 数据库管理
解决 MySQL 分页数据错乱重复
解决 MySQL 分页数据错乱重复
177 0
|
SQL 关系型数据库 MySQL
Mysql数据库,去重,连接篇
sql99的优点是:表的连接是独立的,不占用where的位置。使sql语句整体更加清晰😀 内连接 - 非等值连接 案例:找出每个员工的薪资等级,要求显示员工名,薪资,薪资等级
122 0
|
SQL 数据可视化 关系型数据库
值得收藏:当向数据库导入大量数据时,mysql主键唯一键重复插入,如何丝滑操作并不导入重复数据呢
最近要导入大量数据到数据库,数据库中有数据列要求唯一的,也就是唯一键,但是我拿到的数据有部分重复,一运行就会出错,如果把重复数据找出来,删除后在导入,太麻烦了,所以想要丝滑导入,并忽略重复数据,有了下面的解决方案: 本次案例使用phpmyadmin进行演示
843 1
值得收藏:当向数据库导入大量数据时,mysql主键唯一键重复插入,如何丝滑操作并不导入重复数据呢
|
关系型数据库 MySQL
Navicat连接mycat 不能提示字段 以及已有表刷新不出来
Navicat连接mycat 不能提示字段 以及已有表刷新不出来
Navicat连接mycat 不能提示字段 以及已有表刷新不出来
|
关系型数据库 MySQL
[MySQL日记]主键唯一键重复插入解决方法
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/51346593 我们插...
982 0
|
关系型数据库 MySQL
mysql如何实现可重复读
mysql基于乐观锁原理实现的mvcc(Multi-Version Concurrency Control,多版本并发控制)
8531 0