原问题:如何使用SQL语句查询连续编号中缺失的编号?思路:创建id自增列,每次增加1,就是 1 2 3 4 5 6 7 8 ,这样依次增加,例如删除了2,但是id还是会从最后一个继续增加,也就是说这个不会把之前删除的id覆盖掉,只需要把id取出来做个对比就好了,因为id自动的,删除了一个之后,不会把删除的id增加上去,因为自增列,删除了那一条之后,id还是会从最后一个加1,不会把删除的那条数据覆盖。简单说就是写一条,ID自动增加1推上去,中间有缺失编号的就显示出来,ID还是会继续推上去,最后把表里面所有缺失的编号都以网格的形式显示出来。
insert @tb
select 1 union all
select 2 union all
select 5 union all
select 7 union all
select 9select min, id-1 max from
(
select *, (select max(id)+1 from @tb where id<t.id)min from @tb t
) t
where id<>min/*
min max
----------- -----------
3 4
6 6
8 8
*/