我有一个带有唯一键的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)
还有其他更好/最快的解决方案吗?
答案 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)