MySQL 間斷範圍問題

壹頁書發表於2017-02-04
MySQL連續範圍的姊妹篇

MySQL連續範圍連結如下:
http://blog.itpub.net/29254281/viewspace-1385638/

實驗環境準備
create table t(a int primary key);
insert into t values(1);
insert into t values(2);
insert into t values(3);
insert into t values(100);
insert into t values(101);
insert into t values(103);
insert into t values(104);
insert into t values(105);
commit;

怎麼求不連續的範圍呢。

也就是 4-99,102-102 
怎麼得到這個範圍?

先求表中資料的最小值,減一之後,賦值到一個自定義變數@a.
然後使用這個變數,得到上一行的值,
假如是連續的,每行的值減去@a應該都是1.

那麼不為1的,就是不連續的範圍.

select rn +1 ,a -1 from 
(
    select a,@a rn,@a:=a  from t,(select @a:=(select min(a)-1 from t )) as a
) b where a-rn !=1;



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2133074/,如需轉載,請註明出處,否則將追究法律責任。

相關文章