gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:10:24 24 4
gpt4 key购买 nike

在问题被标记、关闭或任何其他问题之前,我试图通过网站寻找答案,但我总是找到我正在寻找的部分或我正在尝试做的事情,但从来没有找到具体的东西,我已经尝试过到SELECTUPDATE,但从不SELECTUPDATEREPLACE

所以我的问题是这样的:

我有一个 WordPress 数据库表 wp_posts 和另一个名为 wp_postmeta 的表,wp_post 有一行名为 post_contentwp_postmeta 有一行名为 meta_key,我正在尝试 SELECT 更新替换来自wp_post.post_content的字符串,而不更改其他条目。为了不修改其他条目,我需要从 wp_postmeta.meta_key 中选择具有 meta_keycities”的条目。

所以基本上如果我运行

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 个条目。

总之,我需要一种方法以某种方式合并这 2 个查询,以便替换这 600 个条目的 post_content 字符串,而不影响剩下的其他 4400 个条目,这是可以实现的吗?

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

(我为此使用 Sequel Pro)

最佳答案

您可以在 UPDATE 查询中使用 JOINWHERE 进行过滤,就像 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%";

关于MySQL、SQL - 如何同时选择、更新和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51071360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com