SQL 查询从 WordPress 数据库中删除重复的 postmeta

Joe*_*Joe 4 mysql sql wordpress

我的 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
Run Code Online (Sandbox Code Playgroud)

请注意,这些是 wp_post 表上同一篇文章的 3 个元数据(因为它具有相同的 post_id)...所以我只需要保留最新的元数据行,并删除每个元键重复元数据的所有其他实例...我怎样才能做到这一点?

DELETE wp_postmeta.*
FROM wp_posts 
INNER JOIN wp_postmeta ON wp_postmeta.post_ID = wp_posts.ID 
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 6

经过多次研究,我终于弄清楚了,以防有人在寻找答案......

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;
Run Code Online (Sandbox Code Playgroud)