Mysql发现密集系列缺口

Mysql发现密集系列缺口,mysql,series,Mysql,Series,我有一个Mysql表的序列列,它有一个唯一的键,应该从值1到n开始 create table myTest( id INT, ..., sequence INT ..) 这个专栏应该代表一个密集的系列,所以我不想让空白进入其中,我的问题是:我如何才能找到可能的空白 我的第一个想法是使用循环将从1到maxsequence的所有值插入到一个临时的1列表中 create temporary table allvalues( value INT) 然后选择此临时表中所有不在myTest表中的元素:

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

create table myTest( id INT, ...,  sequence INT ..)
这个专栏应该代表一个密集的系列,所以我不想让空白进入其中,我的问题是:我如何才能找到可能的空白

我的第一个想法是使用循环将从1到maxsequence的所有值插入到一个临时的1列表中

create temporary table allvalues( value INT)
然后选择此临时表中所有不在myTest表中的元素:

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

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

这是另一个想法,它不会找到每个间隙,而是在连续间隙的情况下只找到结束间隙:

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

请在问题中给出不同的表名好的,我用一些表名和代码重写了问题。谢谢你确定会有差距吗?我也会这么做不确定,这是我要检查的。我不知道序列是如何在表中填充的,它可以是任何顺序,但我需要检查是否存在一些间隙。是的,但这是另一个问题的解决方案,而不是您发布的解决方案。是的,当然,但假设多行之间只有很少的间隙,这是另一种查找间隙孔并查找其周围数字的方法。我很高兴知道这个解决方案是否比其他解决方案更快。。。