批量处理重复标题的文章数据

来源:本站原创 点击数: 发布时间: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);

解释:

  1. DuplicateTitles CTE:首先查找所有重复的标题(即出现次数大于 1 的标题)。

  2. MinContentIds CTE:然后为每个重复标题找到最小的 ContentId

  3. UPDATE 语句:最后更新表中不在 MinContentIds 中的记录,将其 Status 设置为 -3,这样就保留了每个重复标题中 ContentId 最小的那条记录,其余重复记录的 Status 被标记为 -3。

注意事项:

  • 在执行此操作之前,建议先备份数据或在测试环境中验证查询,以确保不会意外修改重要数据。

  • 如果表非常大,考虑添加索引以提高性能,尤其是对 Title 和 ContentId 字段的查询。