日期:2014-05-17  浏览次数:20816 次

oracle的update语句问题!
有一个cert表
有字段double_certsn,subject和cert_status
其中相同subject项的列会对应有2条以上的相同数据,但是其中只有一条的double_certsn值不为空。
我想实现的目标是让相同的subject项的所有列的double_certsn都等于那个不为空的值

原来用SQL可以实现,语句如下:
UPDATE A SET
    double_certsn=B.double_certsn
FROM cert AS A
    JOIN cert AS B
        ON A.subject=B.subject
WHERE B.double_certsn IS NOT NULL
    AND A.double_certsn IS NULL
        AND A.cert_status='use'
go

现在数据库变为oracle了,运行的时候报错,请各位看看,怎么改成oracle
可以运行的语句

------解决方案--------------------
update cert t set double_certsn=(select distinct double_certsn from cert a where a.double_certsn is not null and a.subject=t.subject ) 
这是不考虑cert_status保持一致,如果要的话,可以仿照改下,distinct 为了防止会有两个相同的double_certsn