mysql查询,查找一个范围内有5条或5条以上连续记录的行


mysql query to find rows with 5 or more consecutive records in a range

在前10条记录中,我必须识别5条或更多连续记录。我给出了以下两个例子:

示例1如下

SL  User       Number   Frequency
1   aaa         9.95    1
2   aaa         9.85    1
3   aaa         9.75    1
4   aaa         9.65    1
5   aaa         9.55    1
6   aaa         9.45    1
7   xxxx        9.35    1
8   bbbb        9.25    1
9   cccc        9.15    1

我想要一个可以获取记录5&6(属于用户aaa的数字9.55和9.45,并将频率更新为2而不是1)。

示例2如下

SL  User    Number  Frequency
1   xxxx     9.95   1
2   aaa      9.85   1
3   aaa      9.75   1
4   aaa      9.65   1
5   aaa      9.55   1
6   aaa      9.45   1
7   xxxx     9.35   1
8   bbbb     9.25   1
9   cccc     9.15   1

查询应该只获取记录6(属于用户aaa的编号9.45,并将频率更新为2而不是1)。

查询应该在用户的前9个位置中的任何位置出现5个或更多连续记录的记录,并将第4个位置之后的位置的频率标记为2。

限制条件:这个查询通过php中的ajax每2秒执行一次。所以我真的不想要使用大量cpu的复杂联接/联合查询。我可以选择在php中这样做,将其分解为2个或多个较小的查询,但更喜欢不加载cpu或数据库的单个查询。如果一个查询可能会加载cpu,那么在php中进行处理时,我可以处理2-3个查询。

你能告诉我如何做到这一点吗?

如果这只是前10条记录,PHP解决方案就不应该那么消耗。。

$arr= mysql result arrays;
$old_user="";
$count=0;
foreach ($arr as $a){
    if ($a['name']==$old_user){
       $count++;
    }else{
       $count=0;
    }
    if ($count > 4) {
        // run the update query here
    }
    $old_user=$a['name'];
}

看看它是否能满足你的需求。