我有一种情况,我必须在前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(编号9.55和9.45属于用户aaa并将频率更新为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)。
查询应该记录5个或更多连续记录出现在用户前9个位置的记录,并将频率标记为2,表示第4个位置后的位置。
约束: 此查询通过php中的ajax每2秒执行一次。所以我真的不想要一个使用大量cpu的复杂的join / union查询。 我可以选择在php中执行此操作,分解为2个或更多较小的查询,但更喜欢单个查询不加载cpu或数据库。 如果单个查询可能加载cpu我可以使用2-3个查询,因为处理发生在php中。
您能否告知如何实现这一目标?
答案 0 :(得分:1)
如果它只是前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'];
}
看看它是否适合你的需要。