在前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'];
}
看看它是否能满足你的需求。