我在 oracle 表中有一些数据 10,000 行我想生成列,返回 1 代表第一行,2 代表第二行,依此类推,1 代表第 3 行,2 代表第 4 行,1 代表第 5 行,2 代表第 6 行等等……有吗我可以使用 sql 查询或任何可以像这样更新我的列的脚本来做到这一点。它会生成 1,2,正如我上面提到的,我想了很多,但我没有使用 sql 或任何其他方法来做到这一点我的要求的场景。如果有可能对我的表数据执行此操作,请提供帮助
问问题
65 次
2 回答
1
您可以使用ROWNUM
和MOD
功能的组合。
您的查询将如下所示:
SELECT ROWNUM, 2 - MOD(ROWNUM, 2) FROM ...
该MOD
函数将为偶数行返回 0,为奇数行返回 1。
于 2013-05-23T17:02:48.093 回答
0
select mod(rownum,5)+1,fld1, fld2, fld3 from mytable;
编辑:我没有误解要求,我在他们周围工作。添加一列然后以这种方式更新表是一个糟糕的设计理念。表很少是完全静态的,即使是规则和验证表。唯一可能有意义的是表是否被锁定以防止删除、插入和更新。对任何现有行的任何更改都可能改变逻辑顺序。从未指定过。删除意味着必须重写整个序列。更新和插入可以具有相同的效果。
如果你想这样做,你可以使用一个序列来插入一个虚假的计数器。一个反复循环的序列,假设您知道顺序并且可以根据该顺序控制插入和更新。
于 2013-05-23T17:02:43.483 回答