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

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

请看下面的SQL:

 
  1. MERGE INTO TEMP_ZL_ACCOUNTLIST t1

  2. USING (select *

  3. from (select row_number() over(partition by a.SCREEN_NAME order by a.user_id desc) rd,

  4. a.*,

  5. a.rowid row_id

  6. from pprt.T_BP_ACL_USER a)

  7. where rd = 1) t2

  8. ON ( t1.LOGIN_NO = t2.SCREEN_NAME )

  9. WHEN MATCHED THEN

  10. UPDATE SET t1.user_id = t2.user_id;

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

如果是临时表,存在数据重复,还可以将重复数据删除,从而执行merge不报错。

 
  1. -- 删除重复数据

  2. delete from dbsalesadm.mk_task_info_555 a

  3. where rowid <> (select max(rowid)

  4. from dbsalesadm.mk_task_info_555 b

  5. where a.act_id = b.act_id

  6. and a.create_date = b.create_date

  7. and a.id_no=b.id_no)

  8. and to_char(a.create_date,'yyyymmdd')='20131214';

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

  1. ORA-30926: unable to get a stable set of rows in the source tables

    ORA-30926: unable to get a stable set of rows in the source tables ORA-30926: 无法在源表中获得一组稳定的行. 原因比较简单 ...

  2. oracle拼接字符串报错,Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决

    备忘:这个函数最大是4000,根据拼接列的长度,通过限制拼接条数来防止拼接字符串过长错误 --这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据 select info.id ...

  3. 连接远程服务器CredSSP加密Oracle修正报错解决办法

    连接远程服务器CredSSP加密Oracle修正报错解决办法: 打开注册表,快捷输入 "regedit"(类似找命令提示符 输入 cmd 一样)找文件夹 路径:HKLM(缩写)\S ...

  4. Oracle中wm_concat函数报错解决方法

    Oracle中wm_concat函数报错解决方法 参考文章: (1)Oracle中wm_concat函数报错解决方法 (2)https://www.cnblogs.com/52net/archive/ ...

  5. Git报错解决:fatal: unable to access ‘https://github.com/...‘: OpenSSL SSL_read:..., errno 10054

    Git报错解决:fatal: unable to access 'https://github.com/-': OpenSSL SSL_read: Connection was reset, errn ...

  6. Oracle因修改pga和sga超过memory限制size报错解决

    小记一例 (因修改pga和sga超过memory限制size) ORA-00838: Specified value of MEMORY_TARGET is too small, needs to b ...

  7. 导入keras训练好的模型报错解决OSError: Unable to open file (unable to open file: name = ‘model_3.h5’)

    导入keras训练好的模型报错解决) 开心撒花 切入正题 开心撒花 第一次写博客,想分享记录一下自己写程序.跑程序过程中的问题和收获.哈哈哈哈 开心. Markdown编辑器 第一次用感觉很友好啊.喜 ...

  8. 已解决:导入keras(tf)训练好的模型报错解决OSError: Unable to open file (unable to open file: name = ‘model_3.h5’)

    1.场景 导入keras训练好的模型报错解决 OSError: Unable to open file (unable to open file: name = 'model_3.h5') 2.解决方 ...

  9. ORACLE安装报错解决

    今天在虚拟机中安装了一个WINDOWS系统,用于安装oracle服务器:从安装到使用中出现了很多的问题,把这些问题解决掉,花了不少时间,查了不少的资料. 第一个,我在安装过程中,出现了ORA-0092 ...

最新文章

  1. Java多线程系列七——ExecutorService
  2. 深度学习(五)——DRN, Bi-directional RNN, Attention, seq2seq, DMN
  3. 珍藏 | 近200篇机器学习与深度学习经典论文整理
  4. MyEclipse发布项目更改项目名
  5. 服务提供者框架讲解 之 myJDBC
  6. 利用spring集成redis使用
  7. C++:Socket:WSAStartup和WSADATA
  8. 移动端可以查看的设计APP,推荐给大家
  9. ubuntu下的3D桌面.compiz
  10. JZOJ 5602. 【NOI2018模拟3.26】Cti
  11. java-php-python-ssm漠河旅游官网计算机毕业设计
  12. 数字音频芯片--Digilent 公司PmodI2S芯片控制
  13. 洛谷 P2657 [SCOI2009] windy数 数位DP
  14. 使用IBM Data Movement Tool 具体迁移oracle至db2实验
  15. JDK版本8u191与8u192的区别, jdk小版本号奇数与偶数的区别
  16. 中兴如何远程服务器时间同步,IPRAN时钟同步方案分析
  17. 高仿膜拜单车安卓APP--Mobike之手机登陆界面
  18. 计算机网络会议排名,计算机通信网络领域的顶级期刊会议排名,和投稿心得分享...
  19. 抖音现在很火的设备性能在线测试源码
  20. 系统架构师之软件工程

热门文章

  1. Mybatis-plus的Service
  2. educoder 数据库原理与应用 实验六 约束与索引
  3. 图像语义分割python_图像语义分割 —利用Deeplab v3+训练VOC2012数据集
  4. Linux云计算-02_CentOS Linux 7.X系统管理
  5. FreeSwitch连接讯时语音网关配置和全部使用场景
  6. Matplotlib 绘图 (二)
  7. MySQL根据出生日期查询年龄,以及对年龄进行分组统计
  8. AngularJS PrimeNG 上传文件 进度条
  9. scala case 常用简写
  10. 什么是大数据?零基础如何学习大数据?(附学习路线)