UPDATE PO_ITEM SET APPROVALQTY = ORIGINALQTY FROM PO_ITEM A JOIN PO_HEADER ON PO_ITEM.CLIENT = PO_HEADER.CLIENT AND PO_ITEM.PONUMBER = PO_HEADER.PONUMBER where PO_HEADER.APPROVAL = 'X'提示:SQL command not properly ended

解决方案 »

  1.   

    没有指定B表,join前应该有一个LEFT,ON后边直接用A,B代替,结束应该有一个分号。
      

  2.   

    UPDATE PO_ITEM
       SET APPROVALQTY = (select ORIGINALQTY FROM PO_ITEM A JOIN PO_HEADER ON PO_ITEM.CLIENT = PO_HEADER.CLIENT AND PO_ITEM.PONUMBER = PO_HEADER.PONUMBER
     where PO_HEADER.APPROVAL = 'X')要选出来,且唯一
      

  3.   

    這個是sql server的格式,oracle不行的。
      

  4.   

    同樣的語句,在SQL中就可以,請問是Oracle中不支持update set from這種寫法嗎?
      

  5.   

    我觉得是FROM PO_ITEM A 这个A的问题,你可以去掉或者以后都引用它
      

  6.   

    SQL和ORACLE是通用的语句,只是个别地方有些更改,但主流没有太大的变化,你可以不用JOIN直接加个逗号试试,表的指定看以上给你的见意。
      

  7.   

    试试下面的写法,如果set子句后的字段ORIGINALQTY 为B表中,需要加前缀B.UPDATE A SET APPROVALQTY = ORIGINALQTY FROM PO_ITEM A JOIN PO_HEADER B ON A.CLIENT = B.CLIENT AND A.PONUMBER = B.PONUMBER where B.APPROVAL = 'X';
      

  8.   

    UPDATE a SET a.APPROVALQTY = b.ORIGINALQTY FROM PO_ITEM A,PO_HEADER b ON a.CLIENT = b.CLIENT AND a.PONUMBER = b.PONUMBER where b.APPROVAL = 'X'不知道你是不是这个意思
      

  9.   

    UPDATE a SET a.APPROVALQTY = b.ORIGINALQTY FROM PO_ITEM A,PO_HEADER b ON a.CLIENT = b.CLIENT AND a.PONUMBER = b.PONUMBER where b.APPROVAL = 'X';
    刚才忘记结尾有;了,呵呵,你试试,不知道是不是你想要的。