具有多个自动增量的列

问题描述

是否可以使用同一表格的另一列作为参考在表格中创建自动增量?

我有一个客户表,其中包含id,position和company_id列。我需要每个同伴都有一个自动递增。

简而言之...我需要一列为每个公司提供多个自动增量

示例:

-------------------------------
| table client                |
-------------------------------
| id | position | company     |
-------------------------------
|  1 |    1     | company one |
|  2 |    2     | company one |
|  3 |    1     | company two |
|  4 |    3     | company one |
|  5 |    2     | company two |
|  6 |    4     | company one |
|  7 |    5     | company one |
|  8 |    3     | company two |
|  9 |    6     | company one |
-------------------------------

我需要列位置作为每个随播广告的自动增量。有人知道这是否可能吗?

解决方法

用作存储在表中的列是非常痛苦的。但是,使用row_number()可以很容易地计算出何时需要它:

select c.*,row_number() over (partition by company order by id) as position
from client c
order by c.id