SQLite查找范围之间的缺失数字(3000-4000)

时间:2018-08-29 01:44:40

标签: php sql sqlite phpmyadmin

我正在寻找2个数字之间最低的数字。

可能会有3080和3085之间的跳跃,依此类推,我只需要3081。 这是用于为条目分配ID,并且这些条目也可以删除,因此ID也是如此,并且由于我们的范围有限,我们希望确保使用所有数字。因此,如果没有任何遗漏的号码,则必须获取下一个可用号码。如果它满了,直到3850,那么它就需要抢3851。

如果已将其删除,则为0;如果有帮助,则为null。

SELECT number, user_id
FROM entries
WHERE user_id = '18'
AND number BETWEEN '3000' AND '4000'

我不确定如何按此顺序获得最低的可用号码,请帮忙。谢谢。

2 个答案:

答案 0 :(得分:0)

如果您想要Help -> Send Feedback -> Report a problem的下一个缺失号码,则:

id

如果您想为特定的select e.id, e.number + 1 from entries e where not exists (select 1 from entries e2 where e2.id = e.id and e2.number = e.number + 1 ); 使用它,则将id添加到外部id = 18子句中。

答案 1 :(得分:0)

尝试使用自我联接:

Explore

Specials子句中的关键条件是SELECT MIN(e1.number) + 1 num_missing FROM entries e1 LEFT JOIN entries e2 ON e2.number = e1.number + 1 WHERE e1.id = 18 AND e1.number BETWEEN 3000 AND 4000 AND e2.number IS NULL; ,这意味着该特定数字在序列中没有下一个立即数,即,它是间隙的开始。