首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用重复数据填充一列

用重复数据填充一列
EN

Stack Overflow用户
提问于 2017-03-28 09:33:59
回答 4查看 55关注 0票数 0

我有两列,A和B: A有一些主键ID:

代码语言:javascript
复制
     A           B
_ _ _ _ _   _ _ _ _ _
DCS000111      Null
DCS000112      Null
DCS000113      Null
DCS000115      Null
DCS000119      Null

我想有一个脚本,可以迭代通过表和填充的null

代码语言:javascript
复制
[1, 2, 3]

如下所示:

代码语言:javascript
复制
 A           B
_ _ _ _ _   _ _ _ _ _
DCS000111      1
DCS000112      2
DCS000113      3
DCS000115      1
DCS000119      2

提前谢谢。

我知道将B列中的值替换为单个值的脚本,但不确定是否使用此方法。

EN

回答 4

Stack Overflow用户

发布于 2017-03-28 09:44:28

您可以使用以下命令在select中赋值:

代码语言:javascript
复制
select a, mod(row_number() over (order by a) - 1, 3) + 1 as b
from t;

在Oracle中进行更新是一件很痛苦的事情。您可以使用merge

代码语言:javascript
复制
merge into t using
      (select a, mod(row_number() over (order by a) - 1, 3) + 1 as b
       from t
      ) tt
      on t.a = tt.a
    when matched then update set t.b = tt.b;
票数 3
EN

Stack Overflow用户

发布于 2017-03-28 09:38:31

查看NTILE函数。

http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions101.htm

只需根据您的分区和排序要求进行应用,并形成一条UPDATE语句。

代码语言:javascript
复制
update MyTable
set B=t from  
( 
select 
NTILE(3) over (order by A) as t from MyTable
) as z
票数 0
EN

Stack Overflow用户

发布于 2017-03-28 15:06:15

如果您不关心1、2、3的顺序(并且给定表记录的任何程度的更改,您为什么还要关心它呢?)这只是一个问题:

代码语言:javascript
复制
update your_table
set b = mod(rownum,3)+1
/ 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43059173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档