mysql删除重复记录(去重)

DELETE consum_record

FROM

 consum_record,

 (

  SELECT

   min(id) id,

   user_id,

   monetary,

   consume_time

  FROM

   consum_record

  GROUP BY

   user_id,

   monetary,

   consume_time

  HAVING

   count(*) > 1

 ) t2

WHERE

 consum_record.user_id = t2.user_id

 and consum_record.monetary = t2.monetary

 and consum_record.consume_time = t2.consume_time

AND consum_record.id > t2.id;

 

上面这条sql语句,分为3步来理解:

(1)查询出重复记录形成一个集合(临时表t2),集合里是每种重复记录的最小ID

(SELECT min(id) id, user_id, monetary, consume_time FROM consum_record GROUP BY user_id, monetary, consume_time HAVING count(*) > 1 ) t2 

(2)关联 判断重复基准的字段

consum_record.user_id = t2.user_id and consum_record.monetary = t2.monetary and consum_record.consume_time = t2.consume_time 

(3)删除原表中id大于t2中id的记录

你可能感兴趣的:(mysql)