MySQL根据某字段查找重复数据,并且保留某字段值最大的记录

时间:2022-05-30 15:35:39

问题场景

当系统没有处理好并发操作的情况下,操作人员同时操作一张表的情况下,数据库有可能被插入相同记录,这些会带来隐藏的bug。

解决思路一

解决并发操作的冲突

解决思路二

对数据库(MySQL)某张表去重
a. 首先根据某个字段找到重复记录

SELECT * FROM tb_table WHERE sample_code IN(
SELECT sample_code FROM tb_table GROUP BY sample_code HAVING COUNT(sample_code) > 1
)

b. 删除重复记录,只保留某字段值最大的记录

delete from tb_table where id not in (select maxid from (select max(id) as maxid from tb_table group by sample_code) b);