How to UPDATE one column using another column in another table? SQL Error: ORA-00933: SQL command not properly ended

隐身守侯 提交于 2019-12-01 13:37:44

问题


I have tried everything I can think of but couldn't solve this SQL error:

SQL Error: ORA-00933: SQL command not properly ended

This is Oracle SQL.

    UPDATE SALES_DATA_FAMILY_2007 A 
    SET A.POG_ID=B.POG_ID 
    FROM POG_HIERARCHY B 
    WHERE A.FAMILY_ID=B.FAMILY ;

One alternative I have tried is as below. Unfortunately it gives another error: ORA-01427: single-row subquery returns more than one row

    UPDATE SALES_DATA_FAMILY_2007 
    SET POG_ID= (SELECT POG_HIERARCHY.POG_ID FROM POG_HIERARCHY 
    WHERE SALES_DATA_FAMILY_2007.FAMILY_ID=POG_HIERARCHY.FAMILY_ID) 
    WHERE EXISTS (SELECT POG_HIERARCHY.POG_ID FROM POG_HIERARCHY 
    WHERE SALES_DATA_FAMILY_2007.FAMILY_ID=POG_HIERARCHY.FAMILY_ID) 
    ;

Please help!


回答1:


If you want to update rows from a subquery with more than one record you can use the merge commenad:

merge into SALES_DATA_FAMILY_2007 A
using (select POG_ID , FAMILY
                 FROM POG_HIERARCHY ) B
on (A.FAMILY_ID=B.FAMILY)
when matched then
update set A.POG_ID=B.POG_ID



回答2:


Try this:

UPDATE SALES_DATA_FAMILY_2007 A
SET A.POG_ID =
(   
  SELECT P.POG_ID 
  FROM POG_HIERARCHY P
  WHERE A.FAMILY_ID = P.FAMILY_ID 
)



回答3:


UPDATE SALES_DATA_FAMILY_2007 A 
SET A.POG_ID= (select B.POG_ID 
                 FROM POG_HIERARCHY B  
                WHERE A.FAMILY_ID=B.FAMILY) ;

This will work if and only if there's at most one corresponding row in POD_HIERARCHY for a given FAMILY. If there's more than one row in POD_HIERARCHY, then you need to determine which row from POD_HIERARCHY you wish to use the value from.




回答4:


UPDATE SALES_DATA_FAMILY_2007 A 
SET A.POG_ID= (select B.POG_ID 
                 FROM POG_HIERARCHY B  
                WHERE A.FAMILY_ID=B.FAMILY)
WHERE A.POG_ID IN (SELECT C.POG_ID FROM POG_HIERARCHY C
                   WHERE A.FAMILY_ID = C.FAMILY);


来源:https://stackoverflow.com/questions/9050743/how-to-update-one-column-using-another-column-in-another-table-sql-error-ora-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!