У меня есть таблица с уникальным автоматическим инкрементным первичным ключом. Со временем записи могут быть удалены из таблицы, поэтому в этих значениях поля есть "дыры". Например, данные таблицы могут быть следующими:
ID | Value | More fields...
---------------------------------
2 | Cat | ...
3 | Fish | ...
6 | Dog | ...
7 | Aardvark | ...
9 | Owl | ...
10 | Pig | ...
11 | Badger | ...
15 | Mongoose | ...
19 | Ferret | ...
Мне интересен запрос, который вернет список отсутствующих идентификаторов в таблице. Для данных выше ожидаемые результаты:
ID
----
1
4
5
8
12
13
14
16
17
18
Примечания:
- Предполагается, что начальный первый идентификатор был 1
- Максимальный идентификатор, который должен быть проверен, является окончательным, то есть можно предположить, что после текущего последнего не было никаких дополнительных записей (см. дополнительные данные по этому пункту ниже)
Недостатком вышеуказанных требований является то, что список не будет возвращать идентификаторы, созданные после ID 19, и которые были удалены. В настоящее время я решаю этот случай в коде, потому что у меня установлен максимальный ID. Однако, если запрос может принимать в качестве параметра MaxID, а также вернуть эти идентификаторы между текущими max и MaxID, это будет хороший "бонус" (но, конечно, не обязательно).
В настоящее время я работаю с MySQL, но подумаю о переходе на SQL Server, поэтому мне бы хотелось, чтобы запрос соответствовал обоим. Кроме того, если вы используете что-либо, что не может работать на SQLite, пожалуйста, сообщите об этом, спасибо.