为了账号安全,请及时绑定邮箱和手机立即绑定

如何在SQL运行计数器中找到“差距”?

如何在SQL运行计数器中找到“差距”?

元芳怎么了 2019-10-25 10:35:37
我想在SQL表的计数器列中找到第一个“间隙”。例如,如果有值1,2,4和5,我想找出3。我当然可以按顺序获取值并手动进行处理,但是我想知道是否可以在SQL中进行处理。另外,它应该是非常标准的SQL,可以与不同的DBMS一起使用。
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

如果您的第一个值id = 1,则所有答案都可以正常工作,否则将不会检测到该差距。例如,如果您的表ID值为3、4、5,则查询将返回6。


我做了这样的事情


SELECT MIN(ID+1) FROM (

    SELECT 0 AS ID UNION ALL 

    SELECT  

        MIN(ID + 1)

    FROM    

        TableX) AS T1

WHERE

    ID+1 NOT IN (SELECT ID FROM TableX) 


查看完整回答
反对 回复 2019-10-25
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

我想到的第一件事。不确定完全采用这种方式是否是个好主意,但应该可以。假设表为t,列为c:


SELECT t1.c+1 AS gap FROM t as t1 LEFT OUTER JOIN t as t2 ON (t1.c+1=t2.c) WHERE t2.c IS NULL ORDER BY gap ASC LIMIT 1


编辑:这可能是一个更快的滴答声(并且更短!):


SELECT min(t1.c)+1 AS gap FROM t as t1 LEFT OUTER JOIN t as t2 ON (t1.c+1=t2.c) WHERE t2.c IS NULL


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 511 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信