将自动增量值添加到与另一列

时间:2017-10-04 04:27:23

标签: sql postgresql

我有一张大桌子(300万行,大约12列)。我有一个列可以包含重复值 - 这是我的" ID"柱。我有第二列" NUM_ID"我想让它从每个独特的" ID"的值1开始。然后 - 如果我遇到重复的值 - " NUM_ID"然后会提升一个值(到2),依此类推。例如:

ID     NUM_ID
1        1
2        1
2        2
2        3
3        1
3        2
4        1
5        1
5        2
5        3
5        4

再次," ID"是预先填充的,我无法更改此列及其值。我的" NUM_ID"列当前是空的 - 我希望有一个sql命令,我可以用来填充列,如上所示?我尝试过使用Python,但更新3M行需要很长时间。另外,如果重要的话,我正在使用PostGresSQL。

帮助?谢谢!

1 个答案:

答案 0 :(得分:2)

如果您正在使用SQL Server,那么您应该使用ROW_NUMBER(),如下所示:

SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) NUM_ID FROM #TM

结果:

ID  NUM_ID
1   1
2   1
2   2
2   3
3   1
3   2
4   1
5   1
5   2
5   3
5   4