一、原因
不能先select出同一表中的某些值,再update这个表(在同一语句中),即不能依据某字段值做判断再来更新某字段的值
二、例子
例如下面想更新v_shop的wallet_switch在查询条件中出现就会报错
UPDATE
v_shop
set
wallet_switch = 1
WHERE
id in(
select
b.id
from
v_shop_contract as a,
v_shop as b
where
a.shop_id = b.id
and b.wallet_switch = 0
);
三、解决方案
把结果集当作一个表,自我查询一遍,再作为in的条件,格式为:SELECT id FROM (结果集) as d
UPDATE v_shop
set wallet_switch = 1
WHERE
id IN (
select
id
FROM
(
SELECT
b.id
FROM
v_shop_contract AS a,
v_shop AS b
WHERE
a.shop_id = b.id
AND b.wallet_switch = 0
) AS d
);