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

Dav*_*ill 13 sql oracle plsql insert

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

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

name   col1 col2
dave   a    nil
sue    b    nil
sam    c    5
Run Code Online (Sandbox Code Playgroud)

需要成为:

name   col1 col2
dave   a    nil
dave   a    a
sue    b    nil
sue    b    a
same   c    5
Run Code Online (Sandbox Code Playgroud)

IE对于此表中的所有条目,在表中col2 is null创建一个新条目,namecol1在其中复制,并且col2a.

OMG*_*ies 17

使用:

INSERT INTO table
  (name, col1, col2)
SELECT t.name, t.col1, 'a'
  FROM TABLE t
 WHERE t.col2 IS NULL
Run Code Online (Sandbox Code Playgroud)

这假设两个namecol1列都不是主键或者对两者都有唯一约束.

  • 此代码需要重复表列的列表,如果将列添加到表中,则会中断.有没有办法在没有列出无趣的列的情况下做到这一点? (3认同)