MYSQL通过两表INNER JOIN执行UPDATE设置文章为回收站状态报错问题
问题排查与修正方案
原SQL核心错误
- 关联语法错误:INNER JOIN 关键字后必须先指定关联表名,再通过
ON声明关联条件,原代码直接在JOIN后填写字段匹配逻辑,不符合SQL语法规范 - 无关表引入错误:你的需求是匹配
egDuqUe_5_posts和egDuqUe_7_posts两张表的文章标题,原代码错误引入了完全不相关的egDuqUe_7_wc_order_coupon_lookup表,导致关联逻辑完全偏离需求 - 关联条件错误:原代码写的关联条件
egDuqUe_7_posts.id = egDuqUe_7_wc_order_coupon_lookup.coupon_id和你需要的标题匹配逻辑完全无关,自然无法得到正确结果
正确执行语句
根据你使用的数据库类型,选择对应写法:
MySQL 环境
UPDATE egDuqUe_5_posts p5 INNER JOIN egDuqUe_7_posts p7 ON p5.post_title = p7.post_title SET p5.post_status = 'trash';
PostgreSQL / SQL Server 环境
UPDATE egDuqUe_5_posts p5 SET post_status = 'trash' FROM egDuqUe_7_posts p7 WHERE p5.post_title = p7.post_title;
安全建议
执行更新操作前,建议先运行查询语句验证匹配的文章是否符合预期,避免误操作:
SELECT p5.id, p5.post_title, p5.post_status FROM egDuqUe_5_posts p5 INNER JOIN egDuqUe_7_posts p7 ON p5.post_title = p7.post_title;
内容的提问来源于stack exchange,提问作者uk101man
相关产品推荐
相关产品推荐

