前段时间碰到这样一个需求,需要从数据库中查询出连续的单号,断号则剔除。
现有表结构
需要对‘num’字段进行连续性查询;
直接上sql
SELECT
distinct t1.`id`,t1.`code`,t1.`num`
FROM test t1,test t2
where
t1.`code`=t2.`code`
and
(t1.`num` = t2.`num`+1 or t1.`num` = t2.`num`-1)
order by t1.`code`,t1.`num`
其原理是生成一张虚拟表-t2,用原表的num 列和 t2 表的num 列进行对比“t1.num = t2.num+1 or t1.num = t2.num-1”,最后去重就可以了
测试结果如下