使用SQL更新WordPress帖子的元值

时间:2016-07-22 18:35:22

标签: mysql sql wordpress phpmyadmin

我正在尝试更新符合特定条件的WordPress数据库中所有帖子的元值。

我创建了一个名为update_with_false的表,其中每行“value”与post_name表中帖子的wp_posts匹配。

我需要做的是将meta_value“included_in_related_articles”的meta_key更改为“{1}}表中与帖子名称相同的每个帖子的”真实“在update_with_false表中。

这是我的SQL,但是我收到了语法错误:

wp_posts

希望这是有道理的。我附上了一些我需要更新的元字段和我创建的额外表格的截图

谢谢!

enter image description here enter image description here

2 个答案:

答案 0 :(得分:3)

您的说明非常清楚。

如果我理解正确,您要更新 wp_postmeta.meta_value 并将其设置为 true ,如果找到 wp_posts.post_name 中的值在 update_with_false.value

您可以先将 wp_posts.post_name 列添加到 wp_postmeta 表,然后通过进一步加入 update_with_false 表来限制已加入的帖子来执行此操作

我把它写在了我的头顶上(稍微帮助了一下) ER diagram):

update wp_postmeta pm
  inner join wp_posts p on p.id = pm.post_id
    inner join update_with_false x on x.value = p.post_name
set pm.meta_value = 'true'
where pm.meta_key = 'included_in_related_articles'

答案 1 :(得分:1)

可以使用子查询完成,如下所示:

UPDATE `wp_postmeta` SET `meta_value`= 'true' WHERE meta_key = 'included_in_related_articles' AND `post_id` IN (SELECT ID FROM wp_posts AS wps LEFT JOIN update_with_false AS uwf on (wps.post_name = uwf.value) )

其中SELECT ID FROM wp_posts AS wps LEFT JOIN update_with_false AS uwf on (wps.post_name = uwf.value)是子查询,将从wp_posts表中提供逗号分隔的ID。