gpt4 book ai didi

MySQL 更新列并进行分组

转载 作者:行者123 更新时间:2023-11-30 01:37:49 24 4
gpt4 key购买 nike

我有...

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 列设置顺序值。

最佳答案

所以您要为每个不同的电子邮件分配一个组ID?如果是这样,请根据每个不同的电子邮件更新 groupid:update tablename set groupid=x where email in (select different 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 变量。

关于MySQL 更新列并进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16616103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com