gpt4 book ai didi

mysql - 需要递归逻辑的 SQL 查询

转载 作者:行者123 更新时间:2023-12-01 05:48:48 25 4
gpt4 key购买 nike

我有一个 MySQL表,它有 2 列记录用户的登录信息:

 User_id  Device_id
a 123
b 123
b 321
d 321
e aaa
f ccc
g cba
h aaa
h ccc
i cba
i aaa

现在我想添加一列 Group : 如果user_id是同一组设备登录的,则放在一起。例如,如下图,用户帐号 ab在设备上登录 123 ,所以 ab在同一组。而用户帐号 b也在设备上登录 321 ,然后所有帐号都是 321登录的应该加入这个群
:
 User_id  Device_id    Group 
a 123 1
b 123 1
b 321 1
d 321 1
e aaa 2
f ccc 2
g cba 2
h aaa 2
h ccc 2
i cba 2
i aaa 2

这不能简单地处理 group by那么如何使用SQL来表达列 Group ?

最佳答案

您可以使用以下查询,

//为将来插入

插入表名
VALUES (j, '123', CASE 分组
WHEN (SELECT count() FROM tableName tn WHERE tn.Device_id='123')=0 THEN (SELECT MAX(tn.grouping)+1 FROM tableName tn)
WHEN (SELECT count() FROM tableName tn WHERE tn.Device_id='123')>0 THEN (SELECT tn.grouping FROM tableName tn WHERE tn.Device_id='123')
结尾
);

//更新现有数据

更新表名
设置分组 = CASE 分组
WHEN (SELECT count() FROM tableName tn WHERE tn.Device_id='123')=0 THEN (SELECT MAX(tn.grouping)+1 FROM tableName tn)
WHEN (SELECT count() FROM tableName tn WHERE tn.Device_id='123')>0 THEN (SELECT tn.grouping FROM tableName tn WHERE tn.Device_id='123')
结尾;

关于mysql - 需要递归逻辑的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57950988/

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