[英]mysql query to find rows with 5 or more consecutive records in a range
我有一種情況,我必須在前10個記錄中標識5個或更多連續記錄。 我在下面給出了2個示例:
示例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)。
該查詢應選擇一條記錄,其中5條或更多條連續記錄出現在用戶的前9個位置中的任何位置,並將第4個位置之后的位置的頻率標記為2。
約束:該查詢每2秒通過php中的ajax執行一次。 因此,我真的不希望使用大量cpu的復雜聯接/聯合查詢。 我可以選擇在php中執行此操作,方法是分解為2個或更多個較小的查詢,但更喜歡不加載cpu或數據庫的單個查詢。 如果單個查詢可能會加載cpu,我可以處理2-3個查詢,因為php中會進行處理。
能否請您告知如何實現?
如果僅是前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'];
}
看看它是否適合您的需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.