【发布时间】:2021-11-13 21:59:50
【问题描述】:
原问题及解决方法请参考Identifying missing sequences in SQLite table。
以下代码正确识别缺失序列,但是,它的起点是基于表中数据的序列中最小的数字。例如,如果序列应该从 1 开始,但数据中的第一个序列以 5 开始,则结果中不包含 1..4。
关于如何使用预定义的开始序列进行测试的任何提示?
SELECT dir, start, stop
FROM (
SELECT m.id + 1 start,
(SELECT MIN(id) - 1 FROM sequence x WHERE x.__dirpath = m.__dirpath AND x.id > m.id) stop,
m.__dirpath dir
FROM sequence m LEFT JOIN sequence r
ON m.__dirpath = r.__dirpath AND m.id = r.id - 1
WHERE r.id IS NULL
)
WHERE stop IS NOT NULL
ORDER BY dir, start, stop;
【问题讨论】:
标签: sqlite sequence common-table-expression missing-data