mysql 统计连续重复值_MYSQL统计和识别重复值

44c3cf45cd5e7fbe36d6470e35d96a31.png

1、查询和计算表person_tbl中(last_name,first_name)组合有重复的记录的数量。

mysql> SELECT COUNT (*) AS repetitions, last_name, first_name

FROM person_tbl  GROUP BY last_name, first_name

HAVING repetitions > 1;

2、从结果集中消除重复记录

使用DISTINCT关键字即可从结果集中消除重复记录。

mysql> SELECT DISTINCT last_name, first_name

FROM person_tbl

ORDER BY last_name;

使用GROUP BY子句。

mysql> SELECT last_name, first_name

FROM person_tbl

GROUP BY (last_name, first_name);

3、删除表中的重复记录

mysql> CREATE TABLE  tmp SELECT last_name, first_name, sex

FROM person_tbl;

GROUP BY (last_name, first_name);

mysql> DROP TABLE person_tbl;

Mysql> ALTER TABLE tmp RENAME TO person_tbl;

还有一个不为人知的技巧,可以直接在一个有重复记录的表上加上主键或唯一索引,可使用ALTER IGNORE语句,命令如下。

mysql> ALTER IGNORE TABLE person_tbl

ADD PRIMARY KEY (last_name, first_name);

可以使用如上的方法消除重复记录,并且确保以后都有唯一约束。

也可以采用如下的方式,直接删除重复数据,如下语句将删除name相同的数据,其中id是主键。

DELETE t1 FROM table1 AS t1 JOIN table1 AS t2 ON t1.id>t2.id AND t1.name=t2.name;

文章基于MySQL DBA修炼之道整理,版权属于原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值