ORA-30926: unable to get a stable set of rows in the source tables(ORA-30926: 无法在源表中获得一组稳定的行)
问题描述
我得到了
ORA-30926: 无法在源表中获得一组稳定的行
ORA-30926: unable to get a stable set of rows in the source tables
在以下查询中:
MERGE INTO table_1 a
USING
(SELECT a.ROWID row_id, 'Y'
FROM table_1 a ,table_2 b ,table_3 c
WHERE a.mbr = c.mbr
AND b.head = c.head
AND b.type_of_action <> '6') src
ON ( a.ROWID = src.row_id )
WHEN MATCHED THEN UPDATE SET in_correct = 'Y';
我运行了 table_1
它有数据,我也运行了内部查询 (src
),它也有数据.
I've ran table_1
it has data and also I've ran the inside query (src
) which also has data.
为什么会出现这个错误,如何解决?
Why would this error come and how can it be resolved?
推荐答案
这通常是由 USING 子句中指定的查询中的重复项引起的.这可能意味着 TABLE_A 是父表,并且多次返回相同的 ROWID.
This is usually caused by duplicates in the query specified in USING clause. This probably means that TABLE_A is a parent table and the same ROWID is returned several times.
您可以通过在查询中使用 DISTINCT 来快速解决问题(实际上,如果Y"是一个常量值,您甚至不需要将其放入查询中).
You could quickly solve the problem by using a DISTINCT in your query (in fact, if 'Y' is a constant value you don't even need to put it in the query).
假设您的查询是正确的(不知道您的表),您可以执行以下操作:
Assuming your query is correct (don't know your tables) you could do something like this:
MERGE INTO table_1 a
USING
(SELECT distinct ta.ROWID row_id
FROM table_1 a ,table_2 b ,table_3 c
WHERE a.mbr = c.mbr
AND b.head = c.head
AND b.type_of_action <> '6') src
ON ( a.ROWID = src.row_id )
WHEN MATCHED THEN UPDATE SET in_correct = 'Y';
这篇关于ORA-30926: 无法在源表中获得一组稳定的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:ORA-30926: 无法在源表中获得一组稳定的行


基础教程推荐
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- 带更新的 sqlite CTE 2022-01-01