sql server刪除重復記錄只保留一條


今天遇到一個歷史導入數據重復的問題,於是要刪除重復的記錄,一開始想用子查詢的方式找到要刪除記錄的id刪除,后來發現DELETE語句可以直接用外連接,這樣更加簡單,效率也更高。

delete sys_project
from sys_project as aa
left join (
    select min(id) as id from sys_project 
    group by sysCode
) as bb
on aa.id = bb.id
where bb.id is null

這里就是通過左外連接查詢出按照sysCode分組的所有重復或不重復的記錄組中的第一條記錄(通過min(id)找出id最小的一條),如果左外連接沒有匹配的記錄,則左外連接的記錄是空的,即可以通過bb.id is null的條件過濾出多余的重復記錄進行刪除。

 

"笨,是一種高級的情商,所謂學會笨一點,就是不懂的事不要瞎做,不明白的話不要亂說。"


免責聲明!

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



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