mysql - SQL查询从wordpress数据库中删除重复的postmeta
问题描述
我的 Wordpress wp_postmeta 表上有一些重复的行。实际上有数百个旧的 postmeta 数据被列出 2 或 3 次的情况......可能来自过去完成的一些数据导入过程......所以我需要从 wp_postmeta 表中删除不需要的重复行,只留下那些 meta_id 编号较高的行...举例说明 wp_postmeta 表的样子:
meta_id | post_id | meta_key | meta_value
155153 | 177115 | owner_img | https://www.example.com/a.jpg
176231 | 177115 | owner_img | https://www.example.com/a.jpg
193983 | 177115 | owner_img | https://www.example.com/a.jpg
请注意,这些是 wp_post 表上同一帖子的 3 个元数据(因为它具有相同的 post_id)...所以我只需要保留最新的元数据行,并删除所有其他元数据为每个元键重复的实例...我怎样才能做到这一点?
DELETE wp_postmeta.*
FROM wp_posts
INNER JOIN wp_postmeta ON wp_postmeta.post_ID = wp_posts.ID
解决方案
经过大量研究,我能够弄清楚,以防万一有人在寻找答案...
DELETE t1 FROM wp_postmeta t1
INNER JOIN wp_postmeta t2
WHERE t1.meta_id < t2.meta_id
AND t1.meta_key = t2.meta_key
AND t1.post_id=t2.post_id;
推荐阅读
- tesseract - hOCR 文件中 x_descenders 和 x_ascenders 的含义?
- c++ - 在 C++ 中拥有多个指向单个对象的指针的正确方法是什么?
- javascript - 使用 for 循环运行异步函数是一种好习惯吗?
- outlook - 如果 Outlook/yahoo 服务器不支持 IMAP CONDSTORE,那么从上次检查中获取标志更改的替代方法是什么
- c - 从文件中读取行时,偶尔会触发分段错误/不正确的校验和
- google-cloud-platform - 如何将本地数据工作流迁移到 Google Cloud?
- python-3.x - pytorch中的类型不匹配
- postgresql - 将列乘以一的不同值
- unix - 如何记录我的 SFTP 命令的输出
- mysql - 从另一个表中选择每个组和关联行的最高值,按最高值排序