UPDATE use_wx SET 
    uxz=B.dm
FROM xzlx AS B
WHERE use_wx.uxz=B.xz我看server数据库他们都是这么写的,但oracle  咋写啊!

解决方案 »

  1.   

    为了防止A表同一个name有多个syncid,加了一个rownum=1的条件。update 表B set syncid=(select distinct syncid from 表A where name=表B.name and rownum=1);
      

  2.   

    一个name就一个唯一的syncid  
      

  3.   

    如果不用rownum=1提示single-row subquery returns more than one row
    用rownum=1的话,表B的数据都被刷新成,同一个syncid了。就是rownum=1的时候查询出来的那个ID值
      

  4.   

    update 表B set syncid=(select distinct syncid from 表A where name=表B.name)
      where exits (select 1 from 表A where name=表B.name)
      

  5.   

    有那么复杂吗,用一个子查询,直接下面的语句不就好了:update B set syncid=(select distinct(syncid) from A where A.name=B.name);
      

  6.   


    MERGE INTO B  
    USING A  
    ON (A.NAME=B.NAME)    
    WHEN MATCHED THEN   
    UPDATE SET   
    B.syncid =A.syncid    
    可以常使用用merge,可以提高性能,不需要用exist
      

  7.   


    可以尝试用用merge,可以提高性能,不需要用exist