0

我有...

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 列。

4

1 回答 1

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 变量。

于 2013-05-17T19:11:32.753 回答