使用Oracle10g合并两个表时出错?

时间:2011-12-26 09:35:52

标签: sql oracle

我正在使用oracle 10g。我试图合并两个表。那时我得到以下错误...... ora-30926无法在源表中获得稳定的行集。

以下是我的查询

merge into mt_test_dest t
using (select distinct d.dest_id dest_id,
                       d.c_id,
                       nvl(tt.destination, tt.destination) destination
         from my_dest_extra d
         join mt_test_dest tt
           on d.c_id = tt.dest_cid
         join my_dest dml
           on dml.dest_id = d.dest_id
        where tt.effectivedate <> to_date('12-12-2999', 'dd-mm-yyyy')) src
on (t.dest_cid = src.c_id)
when matched then
  update set t.dest_id = src.dest_id, t.destination = src.destination;

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:5)

导致错误的最可能原因是您的源查询包含多个具有相同C_ID的行。如果发生这种情况,您有两行或更多行竞争更新目标表中的相同数据(因为此列用作唯一的连接条件)。 Oracle检测到此情况并抛出ORA-30926错误。