300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > sql查询重复记录并删除多余重复记录的方法

sql查询重复记录并删除多余重复记录的方法

时间:2020-04-09 15:19:17

相关推荐

sql查询重复记录并删除多余重复记录的方法

如何在数据库中使用?sql命令查询数据表中的重复记录并删除多余的重复记录?

上表test,有两个字段id和content,共有7条记录,可以看到id=1、2、3时,content字段值都是aaa,id=6、7时,content字段值为eee。

查询content字段的所有记录都有相同的记录

假如要找出来content重复记录字段值,sql命令可以按下面的代码,这样发现的结果将单次显示重复记录,默认显示较小id记录:

select * from test where id in (select id from test group by content having count(content) > 1)

显示所有重复数据,可使用以下数据sql语句:

select * from test where content in (select content from test group by content having count(content) > 1);

也可以用下面的sql句子显示记录重复次数:

Select content,Count(*) From test Group By content Having Count(*) > 1;

删除content多余的记录重复字段内容

执行下面的sql句子可以删除前表test里面的多余的重复记录,仅保留id最大重复记录。

DELETE FROM testWHERE id NOT IN(SELECT nd.i FROM (SELECT MAX(id) as i FROM test GROUP BY content HAVING COUNT(*) > UNION SELECT MAX(id) as i FROM test GROUP BY content HAVING COUNT(*) = 1) as nd )

sql语句解释:

主要代码如下:

下面的nd临时表别名,i是临时字段别名,以下是as可以省略,不影响命令的执行。

SELECT nd.i FROM (SELECT MAX(id) as i FROM test GROUP BY content HAVING COUNT(*) > UNION SELECT MAX(id) as i FROM test GROUP BY content HAVING COUNT(*) = 1) as nd

我们现在数据库里面执行,可以看到这段代码主要是将content内容重复的id排除,剩下的就重新完成了。id3、4、5、7,保留id最大重复记录:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。