0
我运行下面的查询检索来自整数值的列表中的第一个空值。它是一个ID列。当列表没有空值会发生什么
列充满了过去几年的数据。这些值尚未被主键约束插入,因此列表中存在空位。
查询从列表中获得的第一个空值:
SELECT top(1) h.HistoryID + 1
FROM History h
WHERE NOT EXISTS (SELECT * FROM History h2
WHERE h.HistoryID + 1 = h2.HistoryID)
ORDER BY h.HistoryID
只要列表中有一个价值回归(间隙),一切都将正常工作。
问题1:当列表没有间隙时会发生什么。这个查询返回什么?
问题2:如何查询进行更改,以便返回所有缺口后,将返回在列表的末尾的第一个值?
例:[1,3,4]。作为第一个结果,查询将返回。但后来当查询再次运行,是否有可能返回,再次,...?
你有没有做任何测试的用户?创建表,插入值1和值3.执行查询 - 发生了什么?再次执行它等。 – jarlh
我已经在Azure SQL Server /数据库上完成了它,而不是在本地。问题是我无法创建一个新表(Azure SQL数据库)来测试这个小列表。此外,我没有在我的设备上安装的程序在本地执行。 – user3004449
您可以使用http://sqlfiddle.com运行一些基本测试。 – jarlh