You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL DELETE+ORDER BY失效:保留旧帖删除新版重复项求助

解决WordPress重复帖子删除问题(保留最早版本)

问题根源

你的原SQL依赖多表松散关联,且未明确锁定要保留的目标帖子,加上ORDER BY在多表DELETE场景下无法保证逻辑生效,导致误删旧帖子、保留新帖子。

修正后的SQL语句

DELETE p, pm
FROM wp_posts p
JOIN wp_postmeta pm ON p.ID = pm.post_id
WHERE pm.meta_key = 'syndication_permalink'
AND p.ID NOT IN (
    SELECT MIN(post_id)
    FROM wp_postmeta
    WHERE meta_key = 'syndication_permalink'
    GROUP BY meta_value
)
AND p.post_type = 'post';

逻辑说明

  1. 子查询定位保留目标:按syndication_permalink的内容分组,提取每组中最小的post_id——这就是每个重复组里最早发布的帖子ID,需要保留。
  2. 主查询删除重复项:删除所有不在“保留ID列表”里的帖子,以及对应的wp_postmeta记录,确保只留下每个重复内容的初始版本。

原SQL的问题点

  • 多表逗号连接未明确关联规则,容易产生意外匹配;
  • 未限制pm2关联的帖子类型为post,可能匹配到非帖子类型的记录;
  • ORDER BY在多表DELETE中无法控制删除优先级,逻辑不生效。

内容的提问来源于stack exchange,提问作者Benedict Harris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:25:22