首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新/合并目标表中的重复项(Oracle 11g)

更新/合并目标表中的重复项(Oracle 11g)
EN

Stack Overflow用户
提问于 2018-01-27 01:17:27
回答 1查看 496关注 0票数 0

我已经在这个问题上挣扎了一段时间了,希望能得到一些建议。关于我正在使用的更新/合并查询中涉及的源表和目标表的一些上下文:

代码语言:javascript
复制
SRC Table

Format_Code     ACR
----------------------------
BAD             5  
SAD             7
MAD             2

SRC是通过连接两个表的select语句创建的;select语句如下所示:

代码语言:javascript
复制
Select distinct a.Format_Code, b.ACR from Formats a
Inner join Codes b on lower(a.Format_Name) = lower(b.Format_Name)

我正在尝试使用SRC更新目标表(DES),在Format_Code上连接/匹配,如下所示:

代码语言:javascript
复制
Merge Into Inventory DES
Using
(
Select distinct a.Format_Code, b.ACR from Formats a
Inner join Codes b on lower(a.Format_Name) = lower(b.Format_Name)
) SRC
On DES.Format_Code = SRC.Format_Code
When Matched Then Update set DES.ACR = SRC.ACR

我得到以下错误(我认为是因为目标表中的重复项),但不确定如何忽略/绕过它们。SRC不包含重复项,但DES具有重复的Format_Code。在更新期间,我希望只更新重复行的一个实例,或者完全忽略重复项(少量重复项,因此如果需要,我可以手动更新)

代码语言:javascript
复制
SQL Error: ORA-30926: unable to get a stable set of rows in the source tables
30926. 00000 -  "unable to get a stable set of rows in the source tables"
*Cause:    A stable set of rows could not be got because of large dml
activity or a non-deterministic where clause.
*Action:   Remove any non-deterministic where clauses and reissue the dml.

这是我第一次发帖,如果我犯了新手的错误,很抱歉

EN

回答 1

Stack Overflow用户

发布于 2018-01-27 02:17:02

...因为有大量的dml活动...

尝试COMMIT,然后运行您的MERGE。有什么改进吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48466347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档