在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中将结果集中的一个列数据复制到另一个表中的列的主要内容,如果未能解决你的问题,请参考以下文章

如何在同一个表中将数据从一列复制到另一列?

如何在 Oracle 中将一个用户复制或克隆到另一个用户

如何在 SQL 中将数据从一行复制到另一行

在同一个表中将值从一列复制到另一列

在 Oracle 中将结果集插入到表中

在Oracle中将多行合并为一行? [复制]