MsSql去掉重復記錄


假如有這樣一張表news:字段:id,title,time,image,author,現在表中有1萬多條記錄,其中title重復的有上千條。如何才能一次性將title重復記錄刪除呢?

ID Title Time image author
 1 我是高富帥  1234  pic1.jpg  1
 2 我是白富美  1233  pic2.jpg  2
 3 我是高富帥   1235  pic3.jpg  3

本人使用sqlserver數據庫。

現在先將所有的重復數據顯示出來:

SELECT id,title,time,image,author

FROM  news

WHERE (title IN (SELECT title FROM news GROUP BY title HAVING (COUNT(title) > 1))) 

刪除多余的記錄

delete from news

WHERE (title IN (SELECT title FROM news GROUP BY title HAVING (COUNT(title) > 1)))

AND  (id NOT IN (SELECT MIN(id) AS nid FROM news GROUP BY title HAVING (COUNT(title) > 1)))

使用min的原因是保留發布時間最早的記錄,如果要保留時間最后發布的可以使用max


免責聲明!

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



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