SQL: найти пропущенные идентификаторы в таблице

У меня есть таблица с уникальным автоинкрементным первичным ключом. Со временем записи могут быть удалены из таблицы, поэтому естьдыры» в этом поле'с ценностями. Например, данные таблицы могут быть следующими: I '

 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 и которые были удалены. Я'Я в настоящее время решаю этот случай в коде, потому что я держу созданный максимальный идентификатор. Однако, если запрос может принимать в качестве параметра MaxID, а также возвращать эти идентификаторы между текущим max и MaxID, это было бы неплохо »бонус» (но уж точно не обязательно)

В настоящее время я работаю с MySQL, но рассмотрите возможность перехода на SQL Server, поэтому я бы хотел, чтобы запрос соответствовал обоим. Кроме того, если вы используете все, что можетзапустить на SQLite, пожалуйста, упомяните об этом, спасибо.

Ответы на вопрос(17)

Ваш ответ на вопрос