查询表中自增长列的第一个不连续字段
昨天以前的同事问了我一个需求,要查询指定表中自增长序列的第一个不连续的的值。
?
之前一直使用oracle,就先举出了一种oracle的方法:
select t.n from (SELECT id,ROWNUM N FROM demoinc order by id)t where t.id!=t.N and rownum=1
这条语句利用oracle内置提供的伪列rownum,应该还算高效吧。
?
后来之前的同事说不用oracle,他们正在使用sqlite。
对sqlite了解不是很多,放弃了一些性能,改用子查询实现了:
select MIN(id) from demoinc a? where not exists(select * from demoinc where id=a.id+1)
?
后来考虑了一下,估计在上层应用中使用vector加快排效率应该也会不错。