我正在一个wordpress网站上工作,我需要更改所有附件图片的上传路径(我不知道为什么客户最初选择不将它们组织起来。)
这是我正在运行的选择我的附件,并抓住父发布的内容'发布日期是如此,我可以正确地抓住我想要的东西。
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个左右的图像附件作为测试,它们与父帖帖子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(我们必须运行生产服务器正在运行的东西)
答案 0 :(得分:-1)
事实证明,我试图在select语句中运行更新。哪个是禁止的。
我必须运行一个更新语句,然后定义内部联接并将每个“where”声明为该命令中的限制器。使用“和”语法。
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
;
精彩的学习经历。感谢所有这一切。