Oracle:在更新一个字段时复制行

时间:2010-06-22 18:28:49

标签: sql oracle plsql insert

请注意:我询问我想要回答的问题。我知道这个问题意味着数据库设置不佳。因此,我将对任何建议改变表格设置方式的答案进行投票。

我需要复制一堆行,同时更改一个值。

name   col1 col2
dave   a    nil
sue    b    nil
sam    c    5

需要成为:

name   col1 col2
dave   a    nil
dave   a    a
sue    b    nil
sue    b    a
same   c    5

此表格中col2 is null所有条目的IE,在表格中创建一个新条目,namecol1被复制,col2为{{1} }}

3 个答案:

答案 0 :(得分:17)

使用:

INSERT INTO table
  (name, col1, col2)
SELECT t.name, t.col1, 'a'
  FROM TABLE t
 WHERE t.col2 IS NULL

假设namecol1列都不是主键,或者两者都有唯一约束。

答案 1 :(得分:3)

这样做吗?

INSERT INTO yourtable
       (SELECT name, col1, 'a'
          FROM yourtable 
         WHERE col2 is NULL);

答案 2 :(得分:0)

如果列数很大,您可以将所需数据复制到临时表中,根据需要更改临时表中的数据,然后将临时表的内容复制回原始表中,并删除临时表。