我正在运行以下两个合并到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;
答案 0 :(得分:1)
您为案例提供的信息不足,即您没有解释数据库的结构,仅关注这两个表中的主键和唯一键/约束。您尚未显示示例数据。
如文档所述,“ ORA-30926:无法获得一组稳定的行...”错误意味着,您的merge语句匹配条件导致多条合并源中的至少一行匹配在目标表。
不,这不仅仅是两个语句之间的条件列表不同。您还有第二个子查询返回的一组不同的列,如果有DISTINCT
,它们将建议您为{{1}的某些组合使用不同的auditor
值条目},city
和state
在country
表中。