小笔记系列: MySql表中去除指定重复的字段列

在群中偷学的时候发现一个问题,如果MySql表中有重复的字段,要删除这些重复字段改怎么做

MySql部分:


SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `user_id` int(11) DEFAULT NULL,
  `user_name` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('6', '200');
INSERT INTO `user` VALUES ('5', '100');
INSERT INTO `user` VALUES ('4', '100');
INSERT INTO `user` VALUES ('3', '100');
INSERT INTO `user` VALUES ('2', '200');
INSERT INTO `user` VALUES ('1', '213');

创建user表之后,就是sql部分

#  1删除已经存在的临时表
drop TABLE  if EXISTS user_copy;
#  2
create TABLE user_copy (select *,COUNT(DISTINCT user_name) as temp from `user` GROUP BY user_name);
#  3
delete from `user`;
#  4
insert into `user` (select user_id,user_name from user_copy);
#  5
drop TABLE  if EXISTS user_copy;

1:删除已经存在的临时表

2:因为mysql中不支持select into建立临时表,那么就用create table来代替,其中的
COUNT(DISTINCT user_name) as temp
是因为需要用DISTINCT 限定需要去除重复的字段的原因,否则就是对所有字段去除重复,这个字段在临时表中不用管

GROUP BY user_name

是对你需要去除重复的部分的排序

3:删除要处理的表的部分

4:除了count子句的字段,其他的字段,都插入已经清空的表中

5: 删除临时表


处理前数据

+---------+-----------+
| user_id | user_name |
+---------+-----------+
|       5 | 100       |
|       6 | 200       |
|       4 | 100       |
|       3 | 100       |
|       2 | 200       |
|       1 | 213       |
+---------+-----------+

处理后数据

+---------+-----------+
| user_id | user_name |
+---------+-----------+
|       5 | 100       |
|       6 | 200       |
|       1 | 213       |
+---------+-----------+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值