合并为单条INSERT语句替换wp_posts表指定字段的15$为10$
解决方案
要满足用单条INSERT类语句完成需求,得用MySQL的INSERT ... ON DUPLICATE KEY UPDATE语法(这个语法通过INSERT触发主键重复时执行更新,符合你要求的"用INSERT语句而非UPDATE语句"的限定),具体语句如下:
INSERT INTO wp_posts (ID, post_title, post_content, post_excerpt) SELECT ID, REPLACE(post_title, '15$', '10$'), REPLACE(post_content, '15$', '10$'), REPLACE(post_excerpt, '15$', '10$') FROM wp_posts WHERE post_type IN ('post', 'page') ON DUPLICATE KEY UPDATE post_title = VALUES(post_title), post_content = VALUES(post_content), post_excerpt = VALUES(post_excerpt);
说明
- 先通过
SELECT筛选出所有文章(post)和页面(page)的记录,同时对指定的三个字段执行字符串替换 - 用
INSERT把处理后的记录写入表中,因为ID是表的主键,当插入的ID已存在时,会触发ON DUPLICATE KEY UPDATE逻辑 - 触发更新时,仅替换目标字段,表中其他所有字段的数据都会保持原样
内容的提问来源于stack exchange,提问作者Noha el-Deeb
相关产品推荐
相关产品推荐

