mysql,sql—如何同时选择、更新和替换

gk7wooem  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(224)

在问题被标记,关闭或任何事情之前,我试图通过网站寻找答案,我总是找到一部分我正在寻找或我正在尝试做什么,但从来没有具体的东西,我尝试过选择和更新,但从来没有选择,更新和替换
所以我的问题是:
我有一个wordpress数据库表 wp_posts 和另一个名为 wp_postmeta , wp_post 有一行名为 post_content 以及 wp_postmeta 吵架叫 meta_key ,我正在尝试从中选择、更新和替换字符串 wp_post.post_content 不改变其他条目。为了不修改我需要从中选择的其他条目 wp_postmeta.meta_key 具有 meta_key “城市”。
所以基本上如果我跑

SELECT p.post_content FROM wp_post p
INNER JOIN wp_postmeta m ON p.id = m.post_id
WHERE p.post_content LIKE "%TEXT I NEED TO REPLACE%"
AND m.meta_key LIKE "%city%";

这将给我600个条目从5000共享相同的文本,我需要更换。
所以如果我跑了

UPDATE wp_post SET post_content = REPLACE 
(post_content, 'TEXT I NEED TO REPLACE', 'NEW TEXT THAT I AM REPLACING');

这将更改5000个条目,我不希望这样,我需要的是替换我以前运行的select查询中的600个条目。
总而言之,我需要一种方法来合并这两个查询,以某种方式替换这600个条目的post\u内容字符串,而不影响剩下的4400个条目,这是可以实现的吗?
我希望我的问题足够清楚。再次感谢。
(我使用的是sequel pro)

dpiehjr4

dpiehjr41#

你可以用 JOIN 以及 WHERE 在一个 UPDATE 查询,就像一个 SELECT 查询,以筛选更新的行。

UPDATE wp_post AS p
JOIN wp_postmeta AS m ON p.id = m.post_id
SET p.post_content = REPLACE(post_content, 'TEXT I NEED TO REPLACE', 'NEW TEXT THAT I AM REPLACING')
WHERE p.post_content LIKE "%TEXT I NEED TO REPLACE%"
AND m.meta_key LIKE "%city%";

相关问题