如何在跳过的表中查找id

时间:2014-08-25 06:30:39

标签: mysql sql phpmyadmin

假设我有一个主键为1到X的表。在开发表时,有一些条目已被删除,比如我删除了条目5.因此表条目将是1,2, 1,3,4,6,7,8-。是否有查询来查找已跳过的主键的所有ID?

2 个答案:

答案 0 :(得分:0)

看看this link,它有解决问题的方法

引用链接:

select l.id + 1 as start
from sequence as l
  left outer join sequence as r on l.id + 1 = r.id
where r.id is null;

假设您有一个名为序列的表,主键列 Id 1 开始,值为:1,2,3,4 ,6,7,9,......

此示例代码将选择5和8。

答案 1 :(得分:0)

如果序列中的2个键缺失,则simsim的答案将不会返回所有丢失的键。 SQLFiddle演示:http://sqlfiddle.com/#!2/cc241/1

而是创建一个数字表并在键为空的位置加入:

CREATE TABLE Numbers(
    Num INTEGER
)

DECLARE @id INTEGER
SELECT @id = 1
WHILE @id >=1 AND @id <= 100000
BEGIN
    INSERT INTO Numbers
    VALUES(@id)
    SELECT @id += 1
END

SELECT *
FROM Numbers N
LEFT JOIN your_table YT ON N.Num = YT.PrimaryKey
WHERE YT.Primary IS NULL