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