SQL 分层 table 需要简化

SQL hierarchical table need to be simplified

我在使 table 更简单一点方面遇到了一些麻烦,让我解释一下:

Table 结构输入:

OLD_KEY | NEW KEY
  4536     4566
  4566     4977
  4321     10290
  5423     8920

我正在从一个来源获取数据,这会在 table 秒内改变我的 PK(序列号);之后,我需要将所有这些 table 更新为它们的新序列号。

我的问题是,数据可以像示例中那样出现,而不是简单的更新,并且对同一个旧密钥更改两次或更多次(在示例中)4536 首先更改为 4566,然后再次更改为4977.

这目前迫使我使用游标,它将按第一个键和 ETC 排序逐行更新每个 table...

以前还好,最近数据量翻了很多,这个过程很繁重,占用资源也很多。

我的问题是:我需要删除所有必须更新两次或更多次的键,只更新一次,这意味着 - 对于上面的示例,输出如下所示:

OLD_KEY | NEW_KEY
  4536     4977
  4321     10290
  5423     8920

考虑过先验使用分层函数并从...开始,但我从哪里开始?

提前致谢。

SELECT CONNECT_BY_ROOT( old_key ) AS old_key,
       new_key
FROM   table_name
WHERE  CONNECT_BY_ISLEAF = 1
START WITH old_key NOT IN ( SELECT new_key FROM table_name )
CONNECT BY PRIOR new_key = old_key;