【发布时间】:2018-12-06 21:30:59
【问题描述】:
我在 oracle 中运行以下两个合并到查询,第一个正在运行,但第二个合并到语句未运行。它返回以下响应: ORA-30926:unable to get a stable set of rows in the source tables。
这两个查询都使用相同的表并且非常相似。它们之间的唯一区别是第二个合并查询使用三个“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;
查询2)
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;
【问题讨论】:
-
请参考此链接,因为您的内部查询可能会重复...stackoverflow.com/questions/33627802/…
-
显然
AUDTR_RGN_ASSGNMNTS表中至少有一个(市、州、县)组合存在不止一行,AUDITOR的值不同。在这种情况下,应该使用哪个AUDITOR值进行更新?要么数据有错误,AUDITOR应该完全由(市、州、县)确定(在这种情况下,您必须先修复数据 - 找到错误并纠正它们) , 否则问题本身没有意义,不管任何代码(甚至,不管一般的计算机和数据库)。