我在sqlserver下构造了如下sql:
UPDATE ABC SET a0=1,a1=a.a1,a2=a.a2 from (select a1,a2,a3,a4 from a)
WHERE abc.a3=a.a3 and abc.a4<a.a4
请问在oracle中应该如何改(仍旧用一句话完成)?

解决方案 »

  1.   

    UPDATE ABC SET a0=1,a1=a.a1,a2=a.a2 from (select a1,a2,a3,a4 from a) a
    WHERE abc.a3=a.a3 and abc.a4<a.a4;在子查询后加个别名a应该就可以了
      

  2.   

    在sqlserver里是没错,但是在oracle里却不对,oracle在update句法中不支持from。
      

  3.   

    在sqlserver里是没错,但是在oracle里却不对,oracle在update句法中不支持from。
      

  4.   

    忘记了,是这样
    UPDATE ABC SET (a0,a1,a2)=(select 1,a1,a2 from a WHERE a3=abc.a3 and abc.a4<a4)
    还是这样呢
    UPDATE ABC SET (a0,a1,a2) (select 1,a1,a2 from a WHERE a3=abc.a3 and abc.a4<a4)
    楼主自已试吧
      

  5.   

    UPDATE ABC SET (a0,a1,a2)=(select 1,a1,a2 from a WHERE a.a3=abc.a3 and abc.a4<a.a4)