带分组的MySQL更新列

带分组的MySQL更新列,mysql,Mysql,我有 id email groupid ========================================= 1 abc@def 0 2 abc@def 0 3 yyy@yyy 0 4 zzz@zzz 0 5 abc@def 0 6 abc@def 0 我想要 id email groupid ====================

我有

id      email      groupid
=========================================
1       abc@def    0
2       abc@def    0
3       yyy@yyy    0
4       zzz@zzz    0
5       abc@def    0
6       abc@def    0
我想要

id      email      groupid
=========================================
1       abc@def    1
2       abc@def    1
3       yyy@yyy    2
4       zzz@zzz    3
5       abc@def    4
6       abc@def    4
我正在运行这个

set @previous_email= 0;
set @row= 0;
update slcms_table a, (select if(@previous_email=email, @row:=@row+1, @row:=1) as row, @previous_email:=email, email from slcms_table order by id) aa set a.groupid = aa.row where a.email=aa.email
但这给了我

id      email      groupid
=========================================
1       abc@def    1
2       abc@def    1
3       yyy@yyy    3
4       zzz@zzz    4
5       abc@def    5
6       abc@def    5

如何在Mysql中实现我想要的功能?我需要为groupid列设置顺序值。

那么您要为每个不同的电子邮件分配一个groupid?如果是这样,请根据每个不同的电子邮件更新groupid:update tablename set groupid=x,其中电子邮件位于从tablename;中选择不同的电子邮件;。首先,只需选择独特的电子邮件,它是更新查询中的嵌套查询。然后创建序号,我建议使用Select@a:=@a+1作为序号值来更新groupid-这个站点对使用mysql:-排序有很好的解释,这些aridinals将是更新groupid的x变量