MySQL數據庫去重 SQL解決


MySQL數據庫去重的方法

​ 數據庫最近有很多重復的數據,數據量還有點大,本想着用代碼解決,后來發現用SQL就能解決,這里記錄一下

看這條SQL

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;

首先是將重復的記錄查出來另存到一個集合(臨時表t2), 集合里是每種重復記錄的最小ID

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

這些關聯是判斷重復基准的字段

根據條件,刪除原表中id大於t2中id的記錄

到這里歡呼一句 SQL大法好

還是要多學習啊!SQL也不能拖后腿

但是在處理完成之后,數據庫中的主鍵id不是連續的了,強迫症犯了

下面是解決辦法:

​ 我這邊處理方式是:先刪除主鍵id字段,然后再重新生成主鍵id字段

SQL語句



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM