mysql刪除重復數據


有一張學生表,有姓名和性別(0:女,1:男),假如我們想刪除姓名和性別都相同的數據,這里介紹2中方法

首先看一下數據表

編號 姓名 性別
1  王璐 0
2  李萌 0
3  張帥  1 
4   李萌   0 
5  張帥  1 
6   劉濤   1 

NO.1

保留id較小的數據

DELETE t1 FROM student t1, student t2
WHERE t1.name = t2.name AND t1.sex = t2.sex AND t1.id > t2.id

保留id較大的數據

DELETE t1 FROM student t1, student t2
WHERE t1.name = t2.name AND t1.sex = t2.sex AND t1.id < t2.id

 

注意最后的t1.id > t2.id不要忘記,否則會刪除所有的數據,操作之前一定要先備份好數據

 

NO.2

INSERT INTO student_tmp(name, sex)
SELECT DISTINCT name, sex FROM student

 

總結

兩種方法優缺點:

方法二所需時間更短,但是方法二當主鍵為uuid時,需要處理一下,可將把主鍵設置為int自增,然后執行下面的sql就可以了。

UPDATE student_tmp SET id = uuid()

 

參考:

https://stackoverflow.com/questions/4685173/delete-all-duplicate-rows-except-for-one-in-mysql


免責聲明!

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



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