Oracle:在更新一个字段时复制行
请注意:我正在问我想要回答的问题。我知道这个问题意味着数据库设置得不好。因此,我将否决任何建议更改表格设置方式的答案。
我需要复制一堆行,同时更改一个值。
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 为 null
的所有条目,IE 在表中创建一个新条目,其中 name
和 col1
为已复制,col2
为 a
。
Please note: I am asking the question I want answered. I know this question means the database is set up poorly. So I will vote down any answers that suggest changing the way the table is set up.
I need to duplicate a bunch of rows, while changing one value.
name col1 col2
dave a nil
sue b nil
sam c 5
needs to become:
name col1 col2
dave a nil
dave a a
sue b nil
sue b a
same c 5
IE for all entries in this table where col2 is null
, create a new entry in the table where name
and col1
are the copied, and col2
is a
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用:
假设
name
或col1
列都不是主键,或者两者都没有唯一约束。Use:
That's assuming neither the
name
orcol1
columns are a primary key or have a unique constraint on either.这能行吗?
Will this do it?
如果列数很大,可以将所需的数据复制到临时表中,根据需要更改临时表中的数据,然后将临时表的内容复制回原始表,然后删除临时表。
If the number of columns is large, you could copy the data you want into a temporary table, alter the data in the temporary table as you wanted, then copy the contents of the temporary table back into the original, and delete the temporary table.