首页 > 解决方案 > 合并语句给我“无法获得一组稳定的行”错误

问题描述

我有两个表,我试图在一组公共列上合并:

table1    
project|supplies|part|ship|delivery
A1|B2|C3|01012018|02012018
A1|B3|C4|01022018|02022018
A2|B1|C1|01032018|02032018

table2  
project|supplies|part|amount
A1|B2|C3|100
A1|B3|C4|200
A2|B1|C1|300

预期的输出是:

project|supplies|part|amount|ship|delivery
A1|B2|C3|100|01012018|02012018
A1|B3|C4|200|01022018|02022018
A2|B1|C1|300|01032018|02032018

我尝试使用的代码如下,但它会引发ORA-30926: unable to get a stable set of rows in the source tables错误

MERGE INTO table2 t2
    USING (select DISTINCT projects,supplies,part,ship,deliver FROM table1) t1
    ON (t2.project = t1.project)          
WHEN MATCHED THEN
UPDATE SET t2.ship = t1.ship,
            t2.deliver = t1.delivery
WHERE t1.part = t2.part
    AND t1.project = t2.project
    AND t1.supplies = t2.supllies;

我也试过:

MERGE INTO table2 t2
    USING table1 t1
    ON (t2.project = t1.project
    AND t2.part = t1.part
    AND t2.supplies = t1.supplies)          
WHEN MATCHED THEN
UPDATE SET t2.ship = t1.ship,
            t2.deliver = t1.delivery;

但得到同样的错误

标签: sqloraclemerge

解决方案


推荐阅读