程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL獲取連續范圍

MySQL獲取連續范圍

日期:2017/1/20 12:24:25      編輯:MySQL綜合教程

MySQL獲取連續范圍


1、原始數據
原始數據

2、把running_number轉成數據,並加上一列有序數字

SELECT d.running_number+0 running_number,@a:=@a+1 rn FROM device_data d,(SELECT @a:=0) a 
where d.device_id=13 order by d.running_number;

加上有序數據

3、running_number與有序數據的差,差(diff)相同的的running_number說明是連續的

SELECT running_number,rn,running_number-rn diff
FROM 
(SELECT d.running_number+0 running_number,@a:=@a+1 rn 
FROM device_data d,(SELECT @a:=0) a where d.device_id=13) b;

比較數據

4、根據差來分組,並獲得相關差的最小及最大running_number,就形成了連續范圍

select min(c.running_number) min,max(c.running_number) max
from
(SELECT running_number,rn,running_number-rn diff
  FROM 
(SELECT d.running_number+0 running_number,@a:=@a+1 rn 
FROM device_data d,(SELECT @a:=0) a where d.device_id=13)
 b)c group by diff;

連續范圍

5、參考《MySQL技術內幕:SQL編程》 2.6.2連續范圍問題http://book.2cto.com/201211/8313.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved