phpmyadmin 使用SQL更新WordPress帖子的 meta值

34gzjxbg  于 2022-11-09  发布在  PHP
关注(0)|答案(2)|浏览(168)

我试图更新 meta值为我的所有职位在WordPress数据库中符合一定的条件。
我创建了一个名为update_with_false的表,其中每一行“值”都与wp_posts表中的一个帖子的post_name相匹配。
我需要做的是,对于wp_posts表中与update_with_false表中的行具有相同帖子名称的每个帖子,将meta_key“included_in_related_articles”的meta_value更改为“true”。
下面是我的SQL语句,但出现语法错误:

UPDATE SET wp_postmeta (post_id, meta_key, meta_value)
select ID, 'included_in_related_articles', 'true' from wp_posts
WHERE update_with_false.value = wp_posts.post_name

我已经附上了一些需要更新的 meta字段和我创建的额外表的截图
谢谢你!
第一次

wljmcqd8

wljmcqd81#

如果我没理解错的话,您希望更新 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'
jfewjypa

jfewjypa2#

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

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。

相关问题