问题描述

这段话大致意思是说,不能在同一语句中,先select出同一表中的某些值,再update这个表,即不能依据某字段值做判断再来更新某字段的值
以下为错误代码实例:
UPDATE t_orders SET pay = 2
WHERE id in(
SELECT id FROM `t_order` WHERE time > '2023-04-15'
)
解决方法
在select查询的结果再通过中间表方式在查询一次即可解决
UPDATE t_orders SET pay = 2
WHERE id in(
select id from (
select id FROM `t_order` WHERE time > '2023-04-15'
) a
)
文章指出在SQL中不能直接在UPDATE语句内先SELECT同一表的某些值,再依据这些值来UPDATE该表。错误示例是尝试根据时间条件更新订单支付状态。解决方法是将子查询的结果存入中间表,然后基于中间表进行更新操作。这样做可以避免违反数据库操作的规则。
407

被折叠的 条评论
为什么被折叠?



