在oracle中将结果集中的一个列数据复制到另一个表中的列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在oracle中将结果集中的一个列数据复制到另一个表中的列相关的知识,希望对你有一定的参考价值。
我想随机更新表A中的一列(5000行内的100行)和另一个表中的100行列。这样的事情(但在100个记录的循环中):
update kc7crdtfile
set kc7crdtfile.k7748crid = (select y.k7749crid from KC7CTBURQ y where rownum<100)
where kc7crdtfile.k7749crid IS NULL
AND kc7crdtfile.k7732sts in (5, 6, 7, 9, 12)
答案
如果您有一个链接k7748crid
以外的两个表的列,则可以使用相关更新。参考:Example
使用上面的内容运行单个更新对于大型记录而言比循环更有效。但是,由于您希望仅更新100行,您还可以使用cursor loop
过滤掉更新的值来使用隐式ROWNUM = 1
。即使除了k7749crid
之外,两个表之间没有链接列。
BEGIN
FOR rec IN (SELECT y.k7749crid
FROM KC7CTBURQ y
WHERE ROWNUM <= 100)
LOOP
UPDATE kc7crdtfile k
SET k.k7748crid = rec.k7749crid
WHERE k.k7749crid IS NULL
AND k.k7732sts IN (5,
6,
7,
9,
12)
AND NOT EXISTS
(SELECT 1
FROM kc7crdtfile k2
WHERE k2.k7748crid = k.k7748crid
AND k2.k7749crid IS NULL
AND k2.k7732sts IN (5,
6,
7,
9,
12))
AND ROWNUM = 1;
END LOOP;
END;
/
以上是关于在oracle中将结果集中的一个列数据复制到另一个表中的列的主要内容,如果未能解决你的问题,请参考以下文章