如何去除数据库中内容重复但uid不同的行并保留uid最小记录
处理非完全重复的数据库去重(保留uid最小记录)
问题场景
数据库表结构为 (id,name,review,uid),爬取的评论数据中存在评论内容完全一致(id、name、review字段相同)但uid不同的重复行,需要保留每组重复数据里uid更小的那一行。
示例重复数据:
123,Dan,"very good",1000 123,Dan,"very good",2000
此前仅掌握去除完全重复行的方法,无法处理这类非完全重复的场景。
解决方案
通过@Atom提供的分组聚合SQL语句可直接获取去重后的目标数据,核心逻辑是按重复字段分组,提取每组中最小的uid:
SELECT id,name,review, MIN(uid) FROM your_table_name GROUP BY id,name,review;
如果需要直接在原表中删除重复数据(仅保留uid最小的记录),可以结合子查询实现(以MySQL为例):
DELETE t1 FROM your_table_name t1 JOIN your_table_name t2 ON t1.id = t2.id AND t1.name = t2.name AND t1.review = t2.review WHERE t1.uid > t2.uid;
内容的提问来源于stack exchange,提问作者james2471993
相关产品推荐
相关产品推荐

