oracle在使用update语句时只能修改一张表里的内容,所以update 子句后只能有一个表名,所以这条语句显然不对。应该为如下形式:
UPDATE T1
SET T1.id =
(
SELECT TableA.id
FROM (SELECT T2.F1, T2.F2, T2.F3, T2.F4, T3.id FROM T2,T3 where T2.name = T3.name) AS TableA
WHERE T1.F1=TableA.F1
AND T1.F2=TableA.F2
AND T1.F3=TableA.F3
AND T1.F4=TableA.F4
)
UPDATE T1
SET T1.id =
(
SELECT TableA.id
FROM (SELECT T2.F1, T2.F2, T2.F3, T2.F4, T3.id FROM T2,T3 where T2.name = T3.name) AS TableA
WHERE T1.F1=TableA.F1
AND T1.F2=TableA.F2
AND T1.F3=TableA.F3
AND T1.F4=TableA.F4
)
这样的写法在access里面可以实现,实现那样的功能,在oracle里面难道不可以?