我有一个包含有关乐器的基本信息的数据库。每个仪器都有仪器ID(000000-999999),这是它的唯一标识符。我需要找到的仪器ID中有一些漏洞。我可以编写一个SQL查询来查找仪器ID列中存在间隙的位置吗?如果我能找到最大的孔(缺少大多数仪器)将会非常有用。我一直在寻找答案,但似乎大多数解决方案涉及两个带连接的表,其中此实例仅在1个表上。谢谢!
答案 0 :(得分:0)
这可以是一个开始:
;
WITH Instrument AS
( SELECT Id
FROM ( VALUES
( 01 ),
( 02 ),
( 03 ),
( 05 ),
( 09 ),
( 10 ) ) AS Sample (Id)
), Sequence AS
( SELECT MIN(Id) Start,
MAX(Id) Finish
FROM Instrument
UNION ALL
SELECT Start + 1,
Finish
FROM Sequence
WHERE Start < Finish
)
SELECT Sequence.Start
FROM Sequence
LEFT JOIN Instrument
ON Sequence.Start = Instrument.Id
WHERE Instrument.Id IS NULL