基于连接列值更新表

时间:2013-06-27 19:13:31

标签: oracle

我有一张只有4列的表

第一列 - 来自另一个表的每一行的连接列值。根据元数据表中的列ID连接列。连接的顺序与列ID的顺序相同。 第二列 - 我有逗号分隔的主键列。 现在,根据第二列中的主键,我需要更新第3列,它将从第一个连接字段中的每个字段检索主键的值。

4列_它有表名。

我正在使用游标和字符串函数,它工作得非常好,但是当我测试它时,数以百万计的数据,它失败了,性能非常差。

有人可以给我一个相同的更新查询吗

有一个比较工具,用于比较不同数据库中2个表之间的数据,但具有相同的数据结构,并将不匹配的行转储到一个表中,所有列连接在一起(管道分开)。列的顺序与列id和我知道该表的主键(连接但管道分离)。因此,基于此数据,我需要提取存在数据不匹配的主键值。

我需要做类似

的事情

更新column4(从column2中提取的主键值管道分离)

1 个答案:

答案 0 :(得分:0)

检查此LINK,可能会有用。使用该查询,您可以将值与您需要的字符连接(这适用于11g2版本,对于早期版本使用xmlagg ,xmlelement,提取方法)。

CREATE TABLE TEST(
  FIELD INT);

INSERT INTO TEST VALUES(1);
INSERT INTO TEST VALUES(2);
INSERT INTO TEST VALUES(3);
INSERT INTO TEST VALUES(4);

SELECT listagg(FIELD,',' ) WITHIN GROUP (ORDER BY FIELD)
FROM TEST

返回'1,2,3,4'