Oracle合并成无法正常工作的语句

时间:2018-12-06 21:31:00

标签: oracle merge

我正在运行以下两个合并到oracle中的查询中,第一个正在运行,但是第二个未合并到语句中。它返回以下响应:ORA-30926:无法在源表中获得稳定的行集。

两个查询都使用相同的表,并且非常相似。它们之间的唯一区别是第二个合并查询使用三个“ ON”条件,而第一个合并查询仅使用两个“ ON”条件。

我需要找到一种解决方法,以使我对第二个查询的意图得以实现。请帮忙。

查询1)

MERGE INTO loc_final_2_exp t USING (        
    SELECT DISTINCT upper(trim(city)) as city, 
                    upper(trim(state)) as state, 
                    upper(trim(county)) as county  
    FROM audtr_rgn_assgnmnts) a     
    ON (upper(trim(t.city)) = a.city AND 
        upper(trim(t.state)) = a.state)
WHEN MATCHED THEN UPDATE SET t.county = a.county;

Query2)

MERGE INTO loc_final_2_exp t USING (     
    SELECT DISTINCT  upper(trim(city)) as city, 
                     upper(trim(state)) as state, 
                     upper(trim(county)) as county, 
                     upper(trim(auditor)) as auditor
    FROM audtr_rgn_assgnmnts) a   
    ON (upper(trim(t.county))=a.county and 
        upper(trim(t.city)) = a.city and 
        upper(trim(t.state)) = a.state)
WHEN MATCHED THEN UPDATE SET t.loc_status = a.auditor;

1 个答案:

答案 0 :(得分:1)

您为案例提供的信息不足,即您没有解释数据库的结构,仅关注这两个表中的主键和唯一键/约束。您尚未显示示例数据。

如文档所述,“ ORA-30926:无法获得一组稳定的行...”错误意味着,您的merge语句匹配条件导致多条合并源中的至少一行匹配在目标表。

不,这不仅仅是两个语句之间的条件列表不同。您还有第二个子查询返回的一组不同的列,如果有DISTINCT,它们将建议您为{{1}的某些组合使用不同的auditor值条目},citystatecountry表中。