问题描述
这段话大致意思是说,不能在同一语句中,先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
)