mysql数据库去重复

参考: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 
)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维技术迷

MySQL数据库(四):约束条件

安装环境: 操作系统版本:RHEL 6.5 版本:MYSQL 5.5 约束条件的作用: 限制如何给字段赋值,创建表的时候如果没有设置的话,就是my...

3155
来自专栏技术小站

(转)MySQL之char、varchar和text的设计

http://www.cnblogs.com/billyxp/p/3548540.html

622
来自专栏cloudskyme

oracle查找索引及表的其它属性

1、查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columns t,user_i...

3697
来自专栏IT开发技术与工作效率

MySQL 8 列出相关依赖 使用CTE(公共数据表达式)

1805
来自专栏技术碎碎念

mysql使用基础 sql语句与数据完整性(二)

二、DML:Data Manipulation Language 数据操作语言   作用:操作表中的数据的。   关键:INSERT UPDATE DELE...

33210
来自专栏CaiRui

Mysql-5-数据表的基本操作

1.创建表:之前需要use database database_name 然后create table 表名(); 例:创建员工表tb_employee1,结构...

2156
来自专栏惨绿少年

MySQL 索引管理与执行计划

1.1 索引的介绍   索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中...

2140
来自专栏Hongten

mysql_语法总结

我们执行代码就可以创建test数据库了,如果想要查看我们是否创建好了数据库test,我们可以通过一下代码查看mysql中的所有数据库

672
来自专栏Python

表——完整约束性规则(键)

一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: primary key (PK) 标识该字段为该表的...

2037
来自专栏存储技术

MySQL查询索引分析

前一段时间修改数据表时,给一个表添加一个datetime字段,当时遇到了一个问题:我是否需要给该datetime字段上加索引呢?如果不给该字段加索引,当wher...

2446

扫码关注云+社区