表A如下:
COLUMN1 COLUMN2 
n1        desc1     
n1        null     
n2        desc2
n3        desc3
n3        null
现在想根据COLUMN1中的值用COLUMN2中非空的更新是null的值,语句如下:update A SET A.COLUMN2=B.COLUMN2 FROM (SELECT * FROM A WHERE COLUMN2 IS NOT NULL) B WHERE A.COLUMN1=B.COLUMN1 AND A.COLUMN2 IS NULL
运行后提示ORA-00933: SQL 命令未正确结束,请各位高手看看是哪里错了,该怎么修改,谢谢!

解决方案 »

  1.   

    update A  SET A.COLUMN2 = (SELECT t2.COLUMN2 FROM A t2 where t2.Column1 = A.COLUMN1 AND t2.COLUMN2 is not null)
      

  2.   

    SORRY !!你写的可以在sql2000中通过。
      

  3.   

    update语句怎么有自己的from子句?
      

  4.   


    update (select A.COLUMN2 as anum2,B.COLUMN2  as bnum2
         from  A, (SELECT * FROM A WHERE COLUMN2 IS NOT NULL) B
        WHERE A.COLUMN1 = B.COLUMN1
       AND A.COLUMN2 IS NULL
       )set anum2 = bnum2
    试试,要求COLUMN1是主键
      

  5.   

    update A  SET A.COLUMN2 = (SELECT t2.COLUMN2 FROM A t2 where t2.Column1 = A.COLUMN1 AND t2.COLUMN2 is not null)
    where exists (SELECT t2.COLUMN2 FROM A t2 where t2.Column1 = A.COLUMN1 AND t2.COLUMN2 is not null)
     and A.COLUMN2  is null;
      

  6.   

    update A  SET A.COLUMN2 = (SELECT t2.COLUMN2 FROM A t2 where t2.Column1 = A.COLUMN1 AND t2.COLUMN2 is not null) 
    where exists (SELECT t2.COLUMN2 FROM A t2 where t2.Column1 = A.COLUMN1 AND t2.COLUMN2 is not null) 
    and A.COLUMN2  is null;
      

  7.   

    我给的语句在sql server中是没有问题的,但到oracle中就不行了,oracle不熟悉,所以请高手支招啊
      

  8.   


    这个方式如果需要更新的列比较多的话就不好了吧?还有,column1不是主键
      

  9.   


    这个方式如果需要更新的列比较多的话就不好了吧?还有,column1不是主键