UPDATE A SET A.AC1 = B.BC1 FROM A,B WHERE A.ID = B.ID
猜想了一个,没环境试验update a set ac1=(select decode(bc1,null,a.id,bc1) from b where b.id=a.id)
oracle不支持 update ... from 语法, 楼上的语句还有一点问题。 照LZ的意思,你的最后一个=号也应该换成in。UPDATE a SET ac1 = (SELECT bc1 FROM b WHERE b.ID = a.ID) WHERE a.ID IN (SELECT ID FROM b)但也可以参照楼上的写法,不知道效率方面会不会有提高 UPDATE a SET ac1 = NVL ((SELECT bc1 FROM b WHERE b.ID = a.ID), ac1)这关键看你的b表中缺少的a表的记录会不会太多啦。 或者也可以把in改用exists,不过好像是效率上不会有太大区别,你可以自己比较一下。 UPDATE a SET ac1 = (SELECT bc1 FROM b WHERE b.ID = a.ID) WHERE EXISTS (SELECT 1 FROM b WHERE b.ID = a.ID)
SET A.AC1 = B.BC1
FROM A,B
WHERE A.ID = B.ID
楼上的语句还有一点问题。
照LZ的意思,你的最后一个=号也应该换成in。UPDATE a
SET ac1 = (SELECT bc1
FROM b
WHERE b.ID = a.ID)
WHERE a.ID IN (SELECT ID
FROM b)但也可以参照楼上的写法,不知道效率方面会不会有提高 UPDATE a
SET ac1 = NVL ((SELECT bc1
FROM b
WHERE b.ID = a.ID), ac1)这关键看你的b表中缺少的a表的记录会不会太多啦。
或者也可以把in改用exists,不过好像是效率上不会有太大区别,你可以自己比较一下。
UPDATE a
SET ac1 = (SELECT bc1
FROM b
WHERE b.ID = a.ID)
WHERE EXISTS (SELECT 1
FROM b
WHERE b.ID = a.ID)