Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle:在更新一个字段时复制行_Sql_Oracle_Plsql_Insert - Fatal编程技术网

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

Sql Oracle:在更新一个字段时复制行,sql,oracle,plsql,insert,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为

请注意:我在问我想要回答的问题。我知道这个问题意味着数据库设置得很差。因此,我将投票否决任何建议改变桌子设置方式的答案

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

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为空的所有条目
,在表中创建一个新条目,其中
name
col1
是复制的,而
col2
a
使用:

INSERT INTO table
  (name, col1, col2)
SELECT t.name, t.col1, 'a'
  FROM TABLE t
 WHERE t.col2 IS NULL
这是假设
name
col1
列都不是主键,或者对它们都没有唯一的约束。

这样做可以吗

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

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

先前删除的注释:我发现了我的错误。是的,这起作用了。谢谢此代码需要重复表列列表,如果向表中添加列,则会中断。有没有一种方法可以在不列出不感兴趣的列的情况下完成这项工作?+1回答得很好,尽管在我的例子中它实际上不起作用。我只是填充了表中的一些字段。应该,但如果表中有更多列,则可能会出现ORA错误。是的,假设表中有示例中的列。当您偶尔声明
nil
时,您的意思是
NULL