假设我有一个主键为1到X的表。在开发表时,有一些条目已被删除,比如我删除了条目5.因此表条目将是1,2, 1,3,4,6,7,8-。是否有查询来查找已跳过的主键的所有ID?
答案 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)
而是创建一个数字表并在键为空的位置加入:
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