批量处理重复标题的文章数据
来源:本站原创
点击数: 次
发布时间:2025年08月04日
问题描述:有时间某栏目下纯正大量重复采集的问题,如果批量进行删除
解决办法:筛选出重复标题文字的ID,保留较小ID的文章(因为小ID的文章代表初次采集完成的文章,后续重复的需要删除)
你可以使用 SQL 的子查询和 JOIN
操作来实现这一点。表名为 PE_ContentManage_Article
:
-- 找出所有重复的标题及其最小的 ContentId WITH DuplicateTitles AS ( SELECT Title FROM PE_ContentManage_Article GROUP BY Title HAVING COUNT(Title) > 1 ), -- 获取每个重复标题对应的最小 ContentId MinContentIds AS ( SELECT p.Title, MIN(p.ContentId) AS MinContentId FROM PE_ContentManage_Article p JOIN DuplicateTitles d ON p.Title = d.Title GROUP BY p.Title ) -- 更新除最小 ContentId 之外的所有重复记录的 Status 为 -3 UPDATE PE_ContentManage_Article SET Status = -3 WHERE ContentId NOT IN (SELECT MinContentId FROM MinContentIds) AND Title IN (SELECT Title FROM DuplicateTitles);
解释:
DuplicateTitles
CTE:首先查找所有重复的标题(即出现次数大于 1 的标题)。MinContentIds
CTE:然后为每个重复标题找到最小的ContentId
。UPDATE
语句:最后更新表中不在MinContentIds
中的记录,将其Status
设置为 -3,这样就保留了每个重复标题中ContentId
最小的那条记录,其余重复记录的Status
被标记为 -3。
注意事项:
在执行此操作之前,建议先备份数据或在测试环境中验证查询,以确保不会意外修改重要数据。
如果表非常大,考虑添加索引以提高性能,尤其是对
Title
和ContentId
字段的查询。