一、原因
不能先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
);