-1

我有一个字段的表已经像这样散列:

order_id, order_detail_id

//qwe221, jdeiwe

//qwe221, eudasd

kasdaw25, 萨德夫

kasdaw25, syehsd

kasdaw25, kredss

我想让它像这样,这样更容易维护

order_id、order_detail_id、order_id_alias

//qwe221, jdeiwe, 1

//qwe221, eudasd, 1

kasdaw25,萨德夫,2

kasdaw25, syehsd, 2

kasdaw25, kredss, 2

请帮助我,解释如何在 SQL 中逐步完成。谢谢!

4

3 回答 3

3

使用窗口函数

select *, dense_rank() over(order by order_id) order_id_alias from t
于 2018-12-18T09:41:37.593 回答
0

您可以插入使用,

INSERT INTO table_name (col_1, col_2, col_3)
SELECT col_1, col_2, col_3
FROM another_table
WHERE col_1 = 'value';
于 2018-12-18T10:42:07.670 回答
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列添加到表中,如果它不存在的话。

于 2018-12-18T12:19:05.347 回答