UPDATE test1 a
INNER JOIN test2 b ON b.id = a.order_id
SET a.handing_fee = FORMAT(b.pay_money * 0.006, 2)
WHERE
b.paytype_name = '银行卡支付'
AND b.handing_fee IS NULL;执行错误

解决方案 »

  1.   

    [SQL]UPDATE test1 a
    INNER JOIN test2 b ON b.id = a.order_id
    SET a.handing_fee = FORMAT(b.pay_money * 0.006, 2)
    WHERE
    b.paytype_name = '银行卡支付'
    AND b.handing_fee IS NULL;
    [Err] 1064 - multi table related update not supported,tables:[TEST1, TEST2]
      

  2.   

    试试看这个?
    update test1 a
    set  a.handing_fee=(select FORMAT(b.pay_money * 0.006, 2) from test2 b where b.id=a.order_id and b.paytype_name = '银行卡支付'  AND b.handing_fee IS NULL)
    where a.order_id in (select id from test2 where paytype_name = '银行卡支付'  AND handing_fee IS NULL)
      

  3.   


    MYSQL中不支持在update语句中使用join。
      

  4.   


    mysql中也不能够在set,where中使用任何子查询,这样也会报错。所以,你改成这样:UPDATE test1 a,
    (select * from test2 )b
    SET a.handing_fee = FORMAT(b.pay_money * 0.006, 2)
    WHERE b.id = a.order_id
    and b.paytype_name = '银行卡支付'
    AND b.handing_fee IS NULL;
      

  5.   

    可用insert into ... ON DUPLICATE KEY UPDATE改写update语句