Mysql找到密集的系列空白

时间:2015-11-01 09:27:03

标签: mysql series

我有一个带有唯一键的Mysql表的“序列”列,它应该从1到n的值开始。

create table myTest( id INT, ...,  sequence INT ..)

这一栏应该代表一个密集的系列,所以我不想要与它有差距,我的问题是:我怎样才能找到可能的差距?

我的第一个想法是将带有循环的 1 max(sequence)的所有值插入到临时1列表中。

create temporary table allvalues( value INT)

然后选择此临时表的所有元素,其中值不在myTest表中:

select value from allvalues where value is not in (select sequence from myTest)

还有其他更好/最快的解决方案吗?

1 个答案:

答案 0 :(得分:0)

另一个想法是,这并没有找到每个差距,但只有在连续差距的情况下才会找到结束差距:

select m1.sequence-1 from myTest m1
where m1.sequence>1 and not exists
  (select * from myTest m2 where m2.sequence=m1.sequence-1)

http://sqlfiddle.com/#!9/64f32/1