美文网首页爱编程,爱生活
Mysql 数据库去掉指定字段重复的数据

Mysql 数据库去掉指定字段重复的数据

作者: 熬夜的猫头鹰 | 来源:发表于2018-06-16 23:43 被阅读35次

mysql 数据库去掉指定字段重复的数据

问题背景:

目前遇到一个问题需要进行数据的去重。

name sex email address
tony man tony@xxx.com dalian
tony man tony@xxx.com dalian

现在想要name字段上加上主键。这就需要冲掉重复的值。目前采用的方式可以如下

创建表的sql为

create table customers(
`name` varchar(30),
sex varchar(5),
email varchar(50),
address varchar(100)
);

造数据

insert into customers values ('tony','man','tony@xxx.com','dalian');
insert into customers values ('tony','man','tony@xxx.com','dalian');

需要将name字段定义为主键

如果将name字段定义为主键,那么问题来了,name字段有重复的怎么整?首先需要去掉重复值。

我们可以通过临时表的方式进行处理。

  1. 我们可以通过一个变量增加一个字段来做表的唯一标识
set @rownum =0;
select @rownum:=ifnull(@rownum,0)+1 as rownum , c.*from customers c;

  1. 用上面的方式创建一张临时表
set @rownum =0;
create table customers_temp select @rownum:=ifnull(@rownum,0)+1 as rownum , c.*from customers c;

  1. 执行查看临时表的数据
select * from customer_temp;

rownum name sex email address
1 tony man tony@xxx.com dalian
2 tony man tony@xxx.com dalian
  1. 我们可以直接将customer_temp表中的数据删掉。
Delete from customers_temp Where rownum Not In (Select Max(t.rownum) From (select * from customers_temp ) t Group By `name`);

为什么在子查询中又增加了一层子查询,如果不加会报错1093

现在我们只是剩下了rownum最大的一条,剩下的步骤,我们可以删掉之前的表,然后将customers_temp 重命名为customers即可。

drop table customers;

RENAME TABLE customers_temp TO customers;

相关文章

  • Mysql 数据库去掉指定字段重复的数据

    mysql 数据库去掉指定字段重复的数据 问题背景: 目前遇到一个问题需要进行数据的去重。 现在想要name字段上...

  • Spark之读取MySQL数据的五种方式

    本文介绍了使用Spark连接Mysql的五种方式。 主要内容: 不指定查询条件 指定数据库字段的范围 根据任意字段...

  • Mysql 操作详解

    修改mysql密码 在创建数据库时,指定数据库的编码 查看数据表设置( 字段名称和类型) 查询时,如果某个字段存在...

  • 查询MYSQL表注释以及字段注释

    查询MYSQL数据库所有表名以及表注释 查询MYSQL数据库所有字段名以及字段注释

  • hive日常总结

    spark sql 读取mysql 数据库和写入mysql数据库时, dataframe 字段比表字段多一个 直接...

  • MySql 删除重复数据

    MySql 删除重复数据 tags:mysql 重复数据 假设:表:goods 重复字段:name 清除表中...

  • DCL:数据控制语言

    什么是权限 限制一个用户能做什么,在MySQL中,可以设置全局权限、指定数据库权限、指定表权限、指定字段权限 DC...

  • (一)Elasticsearch 索引

    es索引与mysql数据库对比 1. 索引数据类型 text 文本类型,text类型如果不显示指定映射的字段属性,...

  • sql注入原理

    information——schema库(MySQL>=5.0才有) select 字段,字段 from 数据库....

  • mysql查询

    创建数据库 准备数据 查询所有字段select * from students; 查询指定字段select 列1,...

网友评论

    本文标题:Mysql 数据库去掉指定字段重复的数据

    本文链接:https://www.haomeiwen.com/subject/mcdieftx.html