Oracle 不支持UPDATE FROM
语法 - 或者我上次查看时不支持。
这是BNF
:
UPDATE [schema .] { table | view} [ alias ] SET column = { expr | subquery } [, column = { expr | subquery }]...[WHERE condition] ;
(来自:http ://docs.oracle.com/html/A95915_01/sqcmd.htm )
如果要设置 的所有值A.POG_ID
,可以使用以下语法:
UPDATE SALES_DATA_FAMILY_2007 A
SET A.POG_ID=(SELECT B.POG_ID
FROM POG_HIERARCHY B
WHERE A.FAMILY_ID=B.FAMILY);
或 PL/SQL,只是为了更新sales_data_family_2007
适用的行:
DECLARE
BEGIN
FOR sdf_row_to_update IN (
SELECT A.ROW_ID sdf_rowid, B.POG_ID
FROM POG_HIERACHY B, SALES_DATA_FAMILY_2007 A
WHERE B.FAMILY=A.FAMILY_ID) LOOP
UPDATE sales_data_family_2007
SET pog_id=sdf_row_to_update.pog_id
WHERE rowid=sdf_row_to_update.sdf_rowid;
END LOOP;
END;