首页 > 解决方案 > 通过另一个重复字段自动增加 id

问题描述

我的 MySQL 数据库中有两列。我需要通过关注另一个字段来自动递增

例子:

| id | orgId | createdAt |
--------------------------
| 1  | 1     | {VALUE}   |
| 2  | 1     | {VALUE}   |
| 3  | 1     | {VALUE}   |
--------------------------
| 1  | 2     | {VALUE}   |
| 2  | 2     | {VALUE}   |
--------------------------
| 1  | 3     | {VALUE}   |
| 2  | 3     | {VALUE}   |
| 3  | 3     | {VALUE}   |
| 4  | 3     | {VALUE}   |
| 5  | 3     | {VALUE}   |
--------------------------

我需要这样的东西。id 必须通过 follow (orgId) 字段自动递增

标签: mysqlsql

解决方案


您正在寻找row_number()

select row_number() over (partition by orgId order by orgId) as id,
       t.*
from t;

出于您的目的,我不建议存储此值。反而:

  • 向表中添加一个自动递增的 id。

  • 使用上述查询的变体来计算您想要的序列号:

      select row_number() over (partition by orgId order by <id col) as id,
    

推荐阅读