好的,我有这个例子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
答案 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;