编辑联接 SQL 查询中的列

Editing Column in Joined SQL Query

我在一个 wordpress 网站上工作,我需要更改所有附件图片的上传路径(我不知道为什么客户最初 select 没有组织它们。)

这就是我 运行 select 我的附件,抓住 parent posts' post 日期是什么,这样我就可以正确只拿我想要的。

select a.id as child_post_id, a.guid as upload_path, b.post_date as parent_post_date
from wp_posts a
left outer join wp_posts b
on a.post_parent = b.id
where 
a.post_type = 'attachment'
and b.post_date between '2015-11-17 00:00:00' and '2015-11-17 23:59:59'

它提取了我在那个范围内寻找的 8 个左右的图像附件作为测试,它们与 parent posts post id 配对,所以我知道我得到了我想要的。

现在我想替换 guid 列中的部分值,所以我在 "upload_path"

的输出列中进行替换
update upload_path
set upload_path = replace(upload_path, 'wp-content/uploads/', 'wp-content/uploads/2015/11/')
; 

这会导致语法错误,我觉得我在做一个奇怪的操作,所以很难找到答案。

我在 SQL 方面不是很有经验,但我正在努力学习。

我是否需要保存此查询然后 运行 更新已保存的查询?

这可能是一个简单的修复方法,有人可以帮我解决吗 - 请指出正确的方向。

运行 mysql 5.1.73(我们必须运行生产服务器是什么运行ning)

事实证明,我试图 运行 在 select 语句中进行更新。这是不行的。

我必须 运行 一个更新语句,然后定义内部连接并将每个 "where" 声明为该命令中的限制器。使用 "and" 语法。

UPDATE wp_posts AS a
INNER JOIN wp_posts AS b ON a.post_parent = b.id
and a.post_type = 'attachment'
and b.post_date between '2015-11-17 00:00:00' and '2015-11-17 23:59:59'
set a.guid = replace(a.guid, 'wp-content/uploads/', 'wp-content/uploads/2015/11/')
limit 0,30
; 

很棒的学习经历。感谢大家的关注。