gpt4 book ai didi

mysql - 如何折叠相邻行,按某列分组?

转载 作者:行者123 更新时间:2023-11-29 10:39:13 26 4
gpt4 key购买 nike

我想按每个用户的消息从某些聊天中获取统计信息。但我想将相邻的消息分组。如果用户一一写入 3 条消息,则算作 1 条。例如,我有这些记录:

id  user   message
1 1 text1
2 1 text2
3 2 text3
4 3 text4
5 1 text5
6 2 text6
7 2 text7
8 3 text8
9 1 text9
10 1 text10
11 1 text11
12 3 text12

我需要得到这个结果:

user
1
2
3
1
2
3
1
3

我希望获得带有折叠消息的子查询结果,然后使用“group by”运行查询以获取所有统计信息。

我尝试运行

SELECT * FROM messages GROUP BY user ORDER BY id

但它将所有消息按一个用户分组:

id   user
1 1
3 2
4 3

最佳答案

例如(尽管在实践中我很想在应用程序代码中解决此类问题):

SELECT MAX(user) user
, i
FROM
( SELECT user
, CASE WHEN @prev = user THEN @i:=@i ELSE @i:=@i+1 END i
, @prev:=user
FROM my_table
, (SELECT @prev:=null, @i:=0) vars
ORDER
BY id
) x
GROUP
BY i;

或者...

SELECT DISTINCT user, i
FROM
( SELECT user
, CASE WHEN @prev = user THEN @i:=@i ELSE @i:=@i+1 END i
, @prev:=user
FROM my_table
, (SELECT @prev:=null, @i:=0) vars
ORDER
BY id
) x
ORDER
BY i;

关于mysql - 如何折叠相邻行,按某列分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45838513/

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