update  salary set ymrtam=a.[补贴]
from dbo.[user] a  join salary  b
on a.an8=b.yman8
where ympdba in(2290)
and ymrtam<>a.[补贴]这个更新语句是sql server的,如何在oracle下写这个更新语句?谢谢

解决方案 »

  1.   

    这条语句在oracle也可以执行的
      

  2.   

    再ORACLE 下建个临时表试一下就知道了噻
      

  3.   

    update  salary  b set ymrtam=(select a.[补贴]
    from dbo.[user] a  
    where a.an8=b.yman8 and b.ymrtam<>a.[补贴]

    where b.ympdba in(2290) 
      

  4.   


     update salary b
        set b.ymrtam = (select a.补贴
                          from dbo.user a
                         where a.an8 = b.yman8
                           and ympdba in (2290)
                           and ymrtam <> a.补贴)
      

  5.   

    这么不对,更新的时候ymrtam=补贴的这部分都更新成了null;这部分应该不更新才对。
      

  6.   

    更新的过滤条件是where b.ympdba in(2290)当然……
      

  7.   

    update salary b set ymrtam=(select a.[补贴]
    from dbo.[user] a where a.an8=b.yman8) 
    where b.ympdba in(2290)
    and exists(select 1 from dbo.[user] a where a.an8=b.yman8 and b.ymrtam<>a.[补贴]);
      

  8.   

    SqlServer  oracle  我们初学者 确实容易搞混