最佳答案
我有一个唯一的自动增量主键表。随着时间的推移,条目可能会从表中删除,因此该字段的值中存在“漏洞”。例如,表格数据可能如下:
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
备注:
上述要求的一个缺点是,列表不会返回在 ID19之后创建并删除的 ID。我目前正在用代码解决这个问题,因为我持有创建的最大 ID。但是,如果查询可以将 MaxID 作为参数,并返回当前 max 和 MaxID 之间的那些 ID,那将是一个不错的“额外收获”(但肯定不是必须的)。
我目前正在使用 MySQL,但是考虑迁移到 SQLServer,所以我希望查询能够同时满足这两个要求。此外,如果您正在使用任何不能在 SQLite 上运行的东西,请提及它,谢谢。