我有......
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列。
答案 0 :(得分:0)
所以你要为每个不同的电子邮件分配一个groupid?如果是,请根据每封不同的电子邮件更新groupid:update tablename set groupid=x where email in (select distinct email from tablename);
。首先,只需选择不同的电子邮件,即更新查询中的嵌套查询。然后创建序数,我建议使用Select @a:=@a+1 as ordinal
(更新groupid的值) - 这个网站对使用mysql的排序有一个很好的解释:http://www.expattech.com/en/ordinal-row-numbers-in-mysql-queries/40017 - ,那些aridinals将是更新groupid的x变量。