oracle可以写吗?在sql2000运行可以的。在oracle运行报错。update gy_ylsf set  gy_ylsf.fygb = gy_sfxm.sfxm 
from gy_ylsf
left outer join gy_sfxm on gy_sfxm.pydm=gy_ylsf.bh;

解决方案 »

  1.   


    update gy_ylsf a set a.fygb = (select min(sfxm) from gy_sfxm where a.bh = pydm);
    这样写试试!
      

  2.   

    oracle中没有这种语法
    --方法1
    UPDATE gy_ylsf a
       SET a.fygb =
           (SELECT b.sfxm FROM gy_sfxm b WHERE b.pydm = a.bh)
     WHERE EXISTS (SELECT 1 FROM gy_sfxm b WHERE b.pydm = a.bh);
     
    --方法2
    MERGE INTO gy_ylsf a
    USING gy_sfxm b
    ON (b.pydm = a.bh)
    WHEN MATCHED THEN
      UPDATE SET a.fygb = b.sfxm;--方法3
    UPDATE (SELECT /*+bypass_ujvc*/
             a.fygb a_fygb, b.sfxm b_sfxm
              FROM gy_ylsf a, gy_sfxm b
             WHERE b.pydm = a.bh)
       SET a_fygb = b_sfxm;