Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle更新语句错误_Oracle_Subquery - Fatal编程技术网

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