【问题标题】:Column with multiple auto increments [duplicate]具有多个自动增量的列[重复]
【发布时间】:2021-02-17 04:10:09
【问题描述】:

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

我有一个包含 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 |
-------------------------------

我需要列位置作为每个同伴的自动增量。有谁知道这是否可行?

【问题讨论】:

  • 作为一般答案,不,SQL 没有为此提供解决方案。不过,您可以通过同步触发器来做到这一点。具体用例是什么?
  • @TheImpaler,我认为 MySQL 不支持“同步触发器”。在 MySQL 中,必须使用显式表锁来避免竞争条件。

标签: mysql sql auto-increment


【解决方案1】:

作为存储在表中的列,这样做是相当痛苦的。但是,使用row_number() 很容易计算出您何时需要它:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2011-11-13
    • 2021-06-03
    • 1970-01-01
    • 2018-10-17
    • 2011-11-19
    相关资源
    最近更新 更多