为了对新表字段进行一些测试,我想在测试数据库中的现有记录上伪造一些值。我想为表中的每第8条记录分配一个值。我可以使用以下语法轻松地选择每8条记录:

select *
from
  (select rownum rn
    , jeffs_field_to_update
  from jeff)
where mod(rn, 8) = 0;

但是,我对SQL还是很陌生,而且似乎无法将其转换为更新语句。我在这里看到了很多有关选择第n条记录的答案,但是我已经知道了。任何援助将不胜感激。

最佳答案

您需要将此表中的任何键都连接到UPDATE语句。例如,如果您具有唯一的id列,则update语句将如下所示:

update jeff
set jeffs_field_to_update = value
where id in
(select id
from
  (select rownum rn
    , jeff.id
  from jeff)
where mod(rn, 8) = 0)

关于sql - Oracle SQL每n行更新一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17236333/

10-11 02:20