ORACLE MERGE INTO语句,unable to get a stable set of rows in the source tables报错解决

ORACLE数据库,MERGE INTO语句,经常会出现  ORA-30926: unable to get a stable set of rows in the source tables   这个错误,如下图所示:

经检查,这个错误是由于数据来源表(即语句中,from关键字后面的表)存在数据重复造成的。在实际项目研发中,我们一般不能随便改动数据表的记录,那么如何避免这种错误的产生以及如何改正错误呢?

请看下面的SQL:

MERGE INTO TEMP_ZL_ACCOUNTLIST t1
USING (select *
         from (select row_number() over(partition by a.SCREEN_NAME order by a.user_id desc) rd,
                      a.*,
                      a.rowid row_id
                 from pprt.T_BP_ACL_USER a)
        where rd = 1) t2
ON ( t1.LOGIN_NO = t2.SCREEN_NAME )
WHEN MATCHED THEN
  UPDATE SET t1.user_id = t2.user_id;

该SQL使用row_number()函数,把重复记录排序,然后子查询只取rd=1的行,这样的子查询生成的记录都是只有一条,再执行语句,就高枕无忧啦,再也不怕数据源表重复数据错误提示了啊。

ORACLE MERGE INTO语句,unable to get a stable set of rows in the source tables报错解决

时间: 2024-11-20 12:46:36

ORACLE MERGE INTO语句,unable to get a stable set of rows in the source tables报错解决的相关文章

Android 工程报错解决 Unable to resolve target 'android-17'

转自:http://www.cnblogs.com/csulennon/p/3705177.html 换了系统后,重新安装了Android SDK和ADT插件,导入之前的工作空间.居然发现所有的Android工程都报错了. 我之前的SDK版本是用的17,升级后用的是19. 1: [2014-05-03 14:56:25 - ThinkBlink] Unable to resolve target 'android-17' 2: [2014-05-03 14:56:26 - Game2048Pub

oracle goldengate报错解决之OGG-01033

环境概述: 生产环境使用ogg进行数据同步,要求新增两张表 两张表增加后发现目标端数据总是多于源端数据,为此专门做了个测试,遇OGG-01033故障. 报错描述:pump1进程启动失败,状态为abended 看源端日志: 2016-11-07 16:25:40  ERROR   OGG-01033  There is a problem in network communication, a remote file problem, encryption keys for target and

ORACLE安装报错解决

今天在虚拟机中安装了一个WINDOWS系统,用于安装oracle服务器:从安装到使用中出现了很多的问题,把这些问题解决掉,花了不少时间,查了不少的资料. 第一个,我在安装过程中,出现了ORA-00922和ORA-28000报错,这是前面的口令设置上太随意了,没有按照oracle的要求设置口令导致: ORA-00922选项缺失或无效 错误原因:一般是语句的语法有问题.比如命名不对,关键字写错等等.对于非标准的命名,一般采用双引号来创建. 解决办法: 标识符命名规则:(密码设定规则) 1.必须以字母

hp安装oracle报错解决

hpux上安装oracle 11gR2刚开始报错:集群验证框架内部发生了错误 解决办法http://www.it165.net/database/html/201509/14181.html 将文件后缀改为.shsh PHCO_40381.sh 生成PHCO_40381.depot和PHCO_40381.txt文件安装:swinstall -x mount_all_filesystems=false -s /tmp/PHCO_40381.depot PHCO_40381

VS本地调试oracle报错解决方法

同事的项目,SVN下载下来以后一直报错,后来确认一下 1本地要安装oracle 2代码用的是64位的,所以本地安装也要64位的oracle 3VS调试用的IIS Express也要是64位的,激活方法如下,直接cmd执行就好 reg add HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\WebProjects /v Use64BitIISExpress /t REG_DWORD /d 1 4oracle驱动版本不能低于代码引用版本

oracle rac 安装 PRVG-13606 ntp 同步报错解决过程

oracle ntp 检查报错 ./runcluvfy.sh stage -pre crsinst -n oracle57,oracle58 -verbose [10:06:58]Verifying Network Time Protocol (NTP) ...FAILED[10:06:58]PRVG-1063 : configuration files for more than one time synchronization service[10:06:58]were found on n

oracle select in超过1000条报错解决方法

本博客介绍oracle select in超过1000条数据的解决方法,java框架是采用mybatis的,这可以说是一种比较常见的错误:select * from A where id in(...),oracle官方函数做了限定,in里的参数只能1000个,所以超过1000个参数就会报错,解决方法是将集合分为每个集合1000的小集合,然后用or拼起来select * from A where id in(1,2,...,1000) or id in (1001,1002,2000)...,好

.net连接oracle报错解决

错误代码:尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行. 开发环境:win10(64位).vs2019(32位).Oracle(64位). 报错原因:默认vs2019环境下,IIS Express以32位方式运行,导致连接64位版本的oracle引发报错. 解决方法:vs2019菜单栏中选择菜单,工具 >选项 >web项目中,勾选”对网站和项目使用IIS Express 的64

Oracle ORA 12541 报错解决过程

? ? ? ? Oracle 导入全库之后使用plsql登陆时报错 ? ? 版本12C版本2 ? ? ORA-12541:?TNS:?No?Listener ? ? ? ? ? ? 再oracle主机本地可以使用sqlplus 登陆,但是使用plsql无法登陆,报错如上. ? ? 首先考虑是防火墙问题,查看防火墙和selinux均为关闭状态 ? ? 然后查看监听状态 查看 监听状态的命令为首先使用oracle 用户登陆操作系统,命令lsnrctl 进入监听程序,关键status 查看监听状态 ?