如何使用具有相同值的行自动增加列

时间:2016-10-13 23:26:16

标签: mysql sql auto-increment

好的,我有这个例子MySQL DB Here

id | groupid | name
1      1       Bob
2      1       Some Name
3      3       /dev/null
4      3       Moo
5      4       Jane

现在,我可以使用SQL查询来增加groupid列,使其显示如下:

id | groupid | name
1      1       Bob
2      1       Some Name
3      2       /dev/null
4      2       Moo
5      3       Jane

1 个答案:

答案 0 :(得分:0)

您可以使用变量:

  select t.id, t.name,
         (@rn := if(@g = groupid, @rn + 1,
                    if(@g := groupid, 1, 1)
                   )
         ) as groupid
  from t cross join
       (select @g := 0, @rn := 0) params
  order by t.group_id, t.id;

如果您确实想要更改值,可以将类似的逻辑合并到update

编辑:

update中使用上述内容的最简单方法是join:{/ p>

update t join
       (select t.id, t.name,
               (@rn := if(@g = groupid, @rn + 1,
                          if(@g := groupid, 1, 1)
                         )
               ) as new_groupid
        from t cross join
             (select @g := 0, @rn := 0) params
       order by t.group_id, t.id
      ) tt
      on t.id = tt.id
    set t.groupid = tt.new_groupid;