MySQL、SQL—如何同时选择、更新和替换

MySQL、SQL—如何同时选择、更新和替换,mysql,sql,database,Mysql,Sql,Database,在问题被标记、关闭或任何事情之前,我试图通过网站寻找答案,但我总是找到我正在寻找的内容的一部分或我正在尝试做的事情的一部分,但从来没有具体的内容,我尝试选择和更新,但从未选择,更新和替换 所以我的问题是: 我有一个Wordpress数据库表wp_posts,另一个表名为wp_postmeta, wp\u post有一行名为post\u content和wp\u postemta有一行名为meta\u key,我试图选择,更新和替换wp\u post.post\u content中的字符串,而不更

在问题被标记、关闭或任何事情之前,我试图通过网站寻找答案,但我总是找到我正在寻找的内容的一部分或我正在尝试做的事情的一部分,但从来没有具体的内容,我尝试选择更新,但从未选择更新替换

所以我的问题是:

我有一个Wordpress数据库表
wp_posts
,另一个表名为
wp_postmeta
wp\u post
有一行名为
post\u content
wp\u postemta
有一行名为
meta\u key
,我试图选择更新替换
wp\u post.post\u content
中的字符串,而不更改其他条目。为了不修改其他条目,我需要从
wp_postETA.meta_key
中选择具有
meta_key
“cities”的条目

所以基本上如果我跑步

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%";
这将给我5000个条目中的600个条目,它们共享我需要替换的相同文本

所以如果我只是跑

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_内容字符串,而不影响其余4400个条目,这是可以实现的吗

我希望我的问题足够清楚。再次感谢


(我使用的是Sequel Pro)

您可以在
更新
查询中使用
JOIN
WHERE
,就像
选择
查询一样,过滤得到更新的行

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%";

@jmoerdyk的可能重复-我很抱歉,但是对于我所问的问题,它是如何重复的呢?我不是要更新整行或整项,我只是想更新并替换该行值中的字符串或片段。更新时请使用您已经知道的replace()函数。另请参阅将多个表上的
更新
转换为
选择
(或反之亦然)的另一个示例.这是我期待的结果,非常感谢。我不知道你能这样组合。我对这方面还不熟悉。