Oracle更新语句错误
我需要使用源表Oracle更新语句错误,oracle,subquery,Oracle,Subquery,我需要使用源表clm\u snapshot中的值,根据匹配的claim\u id更新表randm\u sampler中名为assignment\u type\u desc的列。问题在于,clm\u snapshot中有两条记录,其声明id为NULL,assignment\u type\u desc的值不同。我不需要这些记录,因此我在update语句中包含了notnull条件。但是update语句仍然返回单行子查询并返回多行错误 我绝对肯定,重复项来自于索赔id值为NULL的记录。但是notnul
clm\u snapshot
中的值,根据匹配的claim\u id
更新表randm\u sampler
中名为assignment\u type\u desc
的列。问题在于,clm\u snapshot
中有两条记录,其声明id为NULL,assignment\u type\u desc
的值不同。我不需要这些记录,因此我在update语句中包含了notnull
条件。但是update语句仍然返回单行子查询并返回多行错误
我绝对肯定,重复项来自于
索赔id
值为NULL
的记录。但是notnull
条件在这里似乎无效。有人能帮我解决这个问题吗?尝试以下更新语句:
UPDATE RANDM_SAMPLER SET ASSIGNMENT_TYPE_DESC =
(SELECT DISTINCT A.ASSIGNMENT_TYPE_DESC
FROM CLM_SNAPSHOT A
WHERE A.CLAIM_ID = RANDM_SAMPLER.CLAIM_ID
AND A.CURRENT_SNAPSHOT_IND='Y'
AND A.HO_CONSULTANT_SEQ_NBR = (SELECT MAX(HO_CONSULTANT_SEQ_NBR)
FROM CLM_SNAPSHOT C
WHERE A.CLAIM_ID = C.CLAIM_ID
AND C.CLAIM_ID IS NOT NULL
GROUP BY CLAIM_ID)
AND A.CLAIM_ID IS NOT NULL )
我已经从子查询中删除了对RANDM_SAMPLER的连接,而是添加了一个非常重要的条件,因为它使到表的链接得到更新:
A.CLAIM_ID = RANDM_SAMPLER.CLAIM_ID
您可能也尝试过同样的方法,但添加表B会使情况变得更糟。而且和外面的桌子没有联系
A.CLAIM_ID = RANDM_SAMPLER.CLAIM_ID