2009-07-13 61 views
1

我有一个表,自动编号id(称为id)范围从1 - 159270,所以从table1选择max(id)返回159270,但我认为其中一个记录已被删除,有没有一种简单的方法来找出哪个ID丢失?找到一个缺失的索引

感谢

回答

6

蛮力:

SELECT * FROM table T1 
WHERE NOT EXISTS (SELECT * FROM Table T2 WHERE T2.ID = T1.ID - 1) 

这应该列出行只是跟着删除的文件。

+0

非常感谢你,soted我的问题,简单,当你看到它,总是忘记SQL是多么简单 – spacemonkeys 2009-07-13 11:58:21

3

不工作,如果超过一个ID在连续缺失......但快:

select t1.id + 1 as missing_id 
from mytable t1 
left join mytable t2 on t1.id + 1= t2.id 
where t2.id is null