PostgreSQL如何分组和填写字段

时间:2018-12-18 09:36:49

标签: sql postgresql

我的带有字段的表已经像这样散列了:

  

order_id,order_detail_id

     

// qwe221,jdeiwe

     

// qwe221,eudasd

     

kasdaw25,萨德尔夫

     

kasdaw25,syehsd

     

kasdaw25,克雷德斯

我想像这样使它更易于维护

  

order_id,order_detail_id,order_id_alias

     

// qwe221,jdeiwe,1

     

// qwe221,eudasd,1

     

kasdaw25,萨德尔夫,2

     

kasdaw25,syehsd,2

     

kasdaw25,kredss,2

请帮助我,逐步解释如何在SQL中进行操作。谢谢!

3 个答案:

答案 0 :(得分:3)

使用窗口功能

select *, dense_rank() over(order by order_id) order_id_alias from t

答案 1 :(得分:0)

您可以使用插入,

IN

答案 2 :(得分:0)

您可以使用以下方法更新表格:

update t
    set order_id_alias = tt.seqnum
    from (select order_id, row_number() over (order by order_id) as seqnum
          from t
          group by order_id
         ) tt
    where t.order_id = tt.order_id;

注意:您可能需要将order_id_alias列添加到表中(如果尚未存在的话)。