mysql删除重复记录,只保存一条

我们有这样的一种经历,历史数据表中重复插入多条记录,我们需要去删除掉重复的记录只保留一条记录。
情况说明:
有一张表tbl_data_meter_h,里面有两个字段分别是IMEI和FREEZE_DATE组成唯一索引。

首先是分组查出重复记录列

select IMEI,FREEZE_DATE from tbl_data_meter_h group by IMEI,FREEZE_DATE having count(*) > 1

之后查询出重复记录中最大的id或者是最小的id,我这里只保存最小的id

select min(id) as id from tbl_data_meter_h group by IMEI,FREEZE_DATE having count(*) > 1

查询和删除在同一条记录上需要生产第三张表。
删除重复记录的sql语句如下:

DELETE from tbl_data_meter_h  
where (IMEI,FREEZE_DATE) in (
SELECT t.IMEI,t.FREEZE_DATE from (
select IMEI,FREEZE_DATE from tbl_data_meter_h group by IMEI,FREEZE_DATE having count(*) > 1) t) 
and 
id not in (
SELECT a.id from (select min(id) as id from tbl_data_meter_h group by IMEI,FREEZE_DATE having count(*) > 1)a)

你可能感兴趣的:(数据库,mysql)