如何添加一列,该列具有递增的整数值,但仅在另一列中的值更改时才会递增

时间:2018-07-05 11:33:11

标签: postgresql

假设我有以下walletid的

walletid
ab2
ab2
cd3

现在我想添加一个ID来将其更改为此:

id     walletid
1      ab2
1      ab2
2      cd3

1 个答案:

答案 0 :(得分:0)

你在这里

SELECT wallets.walletid, wallets_distinct_ids.id
FROM wallets INNER JOIN
(SELECT walletid, row_number() OVER () as id
 FROM 
 (SELECT DISTINCT walletid
  FROM wallets) AS wallets_distinct) AS wallets_distinct_ids
ON wallets.walletid =  wallets_distinct_ids.walletid

说明:

  1. 首先,我们创建一个查询,以选择walletid的不同值
  2. 我们从pt进行查询。 1,并将其用作FROM子句中的源。现在,您可以添加窗口函数以对行进行计数。该查询为每个不同的walletid
  3. 分配不同的ID。
  4. 现在,我们可以将pt.2中的查询用作FROM子句中的源,并将其与您的主表结合起来,为每个walletid分配唯一的ID