如何找出下一个可用的号码

时间:2015-10-02 14:39:14

标签: mysql

在我的MySQL表中,我有一个名为sequence的字段,其中我有值 1,2,3,5,6,7,8,10由于删除了记录,一些序列号被删除。如何从给定的数字中找出下一个可用的号码。让我们说如果我需要3中的下一个数字,我如何得到5号作为我的下一个数字而不是4号。

2 个答案:

答案 0 :(得分:1)

要查找表格中显示的3之后的下一个ID,您应该

SELECT id FROM thetable WHERE id>3 ORDER BY id ASC LIMIT 1

这只是按升序排列大于3的ID,然后在该列表中取第一个。如果它返回一个结果,那么表格中使用的是下一个结果;如果它根本没有返回结果,那么你给它的ID已经是表中最高的ID(或者严格来说,至少与表中最高的ID一样)。

答案 1 :(得分:0)

如果您想要一个能够获得下一个可用数字的通用表达式,那么您可以使用聚合查询:

select coalesce(max(id), maxid + 1) as NextAvailableId
from table t cross join
     (select max(id) as maxid from table t) x
where id > 3;

或者,如果您不喜欢cross join,则可以使用条件聚合:

select coalesce(max(case when id > 3 then id end), max(id)) as NextAvailableId
from table t;