从MySql获取非顺序ID

时间:2014-05-27 08:33:38

标签: php mysql sql auto-increment

我使用MySql来跟踪图像,每个图像都分配了一个自动增量ID。 ID列在理论上也应该类似,

(1,2,3,4,5,6)

可悲的是,在过去的两年里,由于审核原因,我被迫删除行,而我的ID列看起来更像是这样,

(1,3,4,7)

无论如何都要找到丢失的ID,即:

(2,5,6)

我在这里和其他各种论坛上搜索,但唉,我什么也没想出来。我发现与我的相似的唯一答案是将我的ID列与另一个表格进行比较并找出差异。这是一个选项,但我的主表包含25,000行,因此有点难度。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

使用1到25000之间的整数创建临时表。然后在其上执行左/右连接以查找缺少的ID。

答案 1 :(得分:0)

试试:

SELECT a.id+1 AS start, MIN(b.id) - 1 AS end
FROM table1 AS a, table1 AS b
WHERE a.id < b.id
GROUP BY a.id
HAVING start < MIN(b.id) ;

DEMO HERE