gpt4 book ai didi

php - MYSQL: SELECT * FROM `user_log` 其中 `id` 是连续的并且 `username` == 多行中相等

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

我一直在寻找这个问题的答案。我有一个数据库,每当用户登录我们的网络时就会收集数据。一些用户提示断开连接,因此我想爬行数据库,并找到用户出现在数据库中的 3 个连续行中的任何部分。

数据库结构是:

ID          USER

1 MIKE
2 JOHN
3 MIKE
4 MIKE
5 MIKE
6 JOHN
7 JOHN
8 MIKE

我希望查询返回以下内容(Mike 用户使用 3 个连续 ID 登录)

ID          USER

3 MIKE
4 MIKE
5 MIKE

我不知道如何攻击这个问题。

我在想这样的事情:

SELECT * FROM `user_log` WHERE `id` IS sequential??? and `username` == ???

可能是子选择?

最佳答案

您需要做的是为每个连续的用户序列建立一个分组标识符,然后将其用作临时表来执行根据该新分组标识符进行分组的查询。由此,我们只需抓取任何具有三行或更多行的组,并可以使用 idmin/max 值来显示您的范围。我们需要使用变量来完成此任务。

 select min(id), max(id), user
from (
select if(@prev != user, if(@prev := user, @rc := @rc +1, @rc := @rc + 1), @rc) g,
id, user
from log, (select @prev := -1, @rc := 0) q
order by id desc
) q
group by g
having count(g) >= 3;

demo here

这部分:(select @prev := -1, @rc := 0) q 为我们初始化变量,以便我们可以在单个语句中完成它。

关于php - MYSQL: SELECT * FROM `user_log` 其中 `id` 是连续的并且 `username` == 多行中相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30229916/

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