假如有这样一张表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