我的表具有唯一的自动增量主键。随着时间的流逝,条目可能会从表中删除,因此此字段的值中存在“漏洞”。例如,表数据可能如下:
ID | Value | More fields...
---------------------------------
2 | Cat | ...
3 | Fish | ...
6 | Dog | ...
7 | Aardvark | ...
9 | Owl | ...
10 | Pig | ...
11 | Badger | ...
15 | Mongoose | ...
19 | Ferret | ...
我对查询将返回表中缺少的ID的列表感兴趣。对于以上数据,预期结果为:
ID
----
1
4
5
8
12
13
14
16
17
18
笔记:
假设最初的第一个ID为1
应该检查的最大ID是最后一个ID,即可以假设当前的最后一个ID之后没有其他条目(请参阅以下有关这一点的其他数据)
上述要求的缺点是该列表将不会返回ID 19之后创建的ID和已删除的ID。我目前正在用代码解决这种情况,因为我持有创建的最大ID。但是,如果查询可以将MaxID作为参数,并且还返回当前max和MaxID之间的那些ID,那将是一个不错的“奖励”(但肯定不是必须的)。
我目前正在使用MySQL,但是考虑迁移到SQL Server,因此我希望查询能够同时适合这两者。另外,如果您使用的是无法在SQLite上运行的工具,请多谢。
12345678_0001
炎炎设计
相关分类