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

如何在MariaDB/SQL中跨表删除WordPress数据库重复项?

解决方案

核心思路:先清理location表中重复address的冗余记录,再删除posts表中失去关联的孤立记录——只删除那些和被清理的location记录绑定的posts,保留同名但不同地址的合法店铺。

步骤1:清理location表的重复地址记录

选择保留每个address下的任意一条记录(这里以保留最小id的记录为例,也可换成MAX(id)),删除其余重复项:

-- 删除location中重复address的冗余记录,保留每个address的第一条记录
DELETE l1
FROM location l1
LEFT JOIN (
    -- 先找出每个address需要保留的记录id
    SELECT MIN(id) AS keep_id
    FROM location
    GROUP BY address
) l2 ON l1.id = l2.keep_id
WHERE l2.keep_id IS NULL;

步骤2:清理posts表的孤立记录

删除那些postID在location表中已无对应记录的孤立帖子(这些就是误创建的重复记录对应的帖子):

-- 删除posts中没有关联location的孤立记录
DELETE p
FROM posts p
LEFT JOIN location l ON p.postID = l.postID
WHERE l.postID IS NULL;

逻辑说明

  • 不能直接按posts.title去重:因为title相同但address不同的是合法的不同店铺(比如不同地址的"Roxy"),只有当location中属于同一address的重复记录被清理后,对应的posts才是需要删除的冗余项。
  • 上述语句兼容MySQL环境(WordPress常用数据库),避免了同表删除的子查询限制问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:20:35