将值插入到根据fiels值递增的字段中

时间:2016-06-13 08:52:31

标签: sql postgresql

我想在Postgres默认值中的字段中插入值,这些值根据其他字段递增?

在我的表中,我已经有了name字段,我想插入字段'index'的值,如下所示:

Name | Value 
aaaa |MD_1 | 
aaaa |MD_2 | 
aaaa |MD_3 | 
bbbb |MD_1 | 
bbbb |MD_2 | 
bbbb |MD_3 | 
bbbb |MD_4 | 
cccc |MD_1 | 
cccc |MD_2 |

1 个答案:

答案 0 :(得分:0)

我认为你要说的是你要像上面的例子那样更新值字段。很遗憾,您无法在更新语句中使用row_number over partition by,但可以在select中使用它。

你能做的是

  1. 创建另一个临时表并在其中填充value字段。

  2. 截断主表

  3. 将数据从临时表复制到您的主页 表
  4. 假设你的主表是table1。然后这样做

    SQLFiddle Demo

    CREATE TABLE Table2 (Name varchar(4), val varchar(6));
    
    INSERT INTO TABLE2 
    SELECT NAME,('MD_'||row_number() over (partition by name order by name)) FROM TABLE1;
    
    truncate table table1;
    
    insert into table1 
    select name,val from table2;