我真的不明白为什么下面的查询会出错 ORA-30926: unable to get a stable set of rows in the source tables
正如我所提供的 distinct
我的 merge
查询和bbètstèu历史具有适当的唯一约束。
merge into bb_tst_history h
using (select distinct r.ausuebungsbezeichnung
from bb_tst_rollup r
join ( select root, boerse, security_typ
from bb_export_filter
minus
select root, boerse, security_typ
from bb_tst_exception
) e
on r.root = e.root
and r.security_typ = e.security_typ
and r.boerse = e.boerse
) s
on (s.root = h.root and s.security_typ = h.security_typ and s.boerse = h.boerse)
when matched then
update set h.ausuebungsbezeichnung = s.ausuebungsbezeichnung
when not matched then
insert values (s.ausuebungsbezeichnung);
2条答案
按热度按时间mitkmikd1#
在中,必须有一条匹配条件的记录
USING
条款。所以你可以用
GROUP BY
以及MAX
在USING
条款如下:k4ymrczo2#
发生此错误的原因是您在源中获取了多个用于连接列的行。处理此问题的最佳方法是,识别导致此问题的记录。下面的sql可以给你这些记录-
您需要更新“on”子句中的附加联接条件来修复此问题。
更新的合并语句-