关于UPDATE的那些坑

废话不多说,请看代码:

UPDATE 
    my_return 
SET next_settlement_time = date_sub(r_return_day,interval -1 day)
WHERE r_id IN (
    SELECT  r.r_id
    FROM my_borrow_apply b
    LEFT JOIN my_return r ON r.b_id=b.b_id
    WHERE b.partner_id = 26 and b.fund_id = 183
)

错误:You can't specify target table 'my_return' for update in FROM clause

原因是:修改的表不能在子查询中出现。

正确的写法:

UPDATE 
    my_return 
SET next_settlement_time = date_sub(r_return_day,interval -1 day)
WHERE b_id IN (
    SELECT b.b_id
    FROM my_borrow_apply b
    WHERE b.partner_id = 26 and b.fund_id = 183
)

^ _ ^

 

你可能感兴趣的:(sql)