【发布时间】:2017-01-19 14:58:28
【问题描述】:
假设我的 Oracle DB 12.1 中有一个表 tab1,它有一个列 record_id(类型 NUMBER)和许多其他列,其中有一个名为 exchg_id 的列。
当一批新行被插入到表中时,这个 record_id 总是空的。我需要做的是为满足条件...WHERE EXCHG_ID = 'something' 的所有行填充值 1..N 的 record_id,并且此类行数为 N。当然我知道如何在程序上执行此操作(在 for 循环中) ,但我想知道是否有使用单个 UPDATE 语句的更快方法。我想像这样:
UPDATE tab1 SET record_id = {1..N} WHERE exchg_id = 'something';
非常感谢您的帮助!
更新:行的顺序并不重要,我不需要特定的顺序。对于任何给定的 exchg_id,我只需要唯一的 record_id 的 1..N。
【问题讨论】:
-
您只想更新顺序值为 1.2.3.4 的行。对于给定的 exchg_id,以任何顺序(行)?
-
是的,我不关心行的顺序。很抱歉没有在原文中指出来
-
假设您只想将此“record_id”添加到新行中,您如何将它们与表中已经存在的行区分开来(并且这也可能满足您拥有的任何条件)?或者条件是否已经这样做了,也许是像“added_date > (something)”这样的条件?
-
这不是问题。我知道(从不同的表)这些新行必须具有的 exchg_id 的值。没有其他行将满足 where 条件。我可能同时有两个新批次(来自它们的行,record_id = null),但它们会有不同的 exchg_id。所以我会一一处理。
标签: oracle sql-update