选择具有相同ID的行并重写按ID分组的ID

时间:2018-11-30 14:48:50

标签: mysql sql

我有一张这样的桌子:

+------+------+
| AID  | NAME |
+------+------+
|  1   | A    |
|  2   | A    |
|  3   | A    |
|  4   | B    |
|  5   | B    |
+------+------+

并带有“选择”选项,输出应类似于:

+------+------+------+
| AID  | NAME | NEWID|
+------+------+------+
|  1   | A    |  1   |
|  2   | A    |  2   |
|  3   | A    |  3   |
|  4   | B    |  1   |
|  5   | B    |  2   |
+------+------+------+

我只需要使用SQL,存储过程或函数。

我不知道如何在不使用存储过程的情况下编写查询。

谁可以帮助我?

尼古拉

1 个答案:

答案 0 :(得分:1)

您需要row_number()

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

编辑::您还可以使用相关子查询:

select t.*,
       (select count(*)
        from table t1
        where t1.name = t.name and t1.id <= t.id
       ) as newid
from table t;