使用缺失值查询查找表中缺失的 ID
此查询旨在识别具有自增唯一主键字段的表中缺失的 ID,其中已删除的条目可能在 ID 值中造成了间隙。例如,具有以下数据的表:
<code> ID | Value | More fields...</code>
2 | Cat | ...
3 | Fish | ...
6 | Dog | ...
7 | Aardvark | ...
9 | Owl | ...
10 | Pig | ...
11 | Badger | ...
15 | Mongoose | ...
19 | Ferret | ...
预期结果将是缺失 ID 的列表:
<code> ID</code>
1
4
5
8
12
13
14
16
17
18
我们做出三个假设:初始第一个 ID 为 1,最大 ID 为最后一个 ID,并且当前最后一个 ID 之后没有删除的 ID。
对于 SQLite,存在一个简单的解决方案:
<code>SELECT DISTINCT id +1 FROM mytable WHERE id + 1 NOT IN (SELECT DISTINCT id FROM mytable);</code>
此查询通过从第一个 ID 生成到最后一个 ID 的数字序列并排除现有 ID 来有效地识别缺失的 ID,从而留下缺失的值。这是在 SQLite 中解决此问题的直接有效的方法。
以上是如何查找 SQLite 表中丢失的自动递增 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!