Вы уверены, что хотите это сделать? Я предполагаю, что причина, по которой вы хотите найти неиспользуемые номера, заключается в том, что вы можете использовать их.
Но учтите, что числа могут отсутствовать, потому что кто-то использовал их в прошлом и удалил строку из базы данных. Поэтому, если вы найдете этот номер учетной записи и повторно используете его для новой учетной записи, вы можете назначить номер, который использовался ранее и был удален по причине.
Если в других системах есть какие-либо исторические документы, которые ссылаются на этот номер счета, они могут быть ошибочно связаны с новой учетной записью с использованием того же номера.
Тем не менее, если вы учли это, вы можете найти неиспользуемые идентификаторы следующим образом:
SELECT t1.acctnum-1 AS unused_acctnum
FROM MyTable t1
LEFT OUTER JOIN MyTable t2 ON t2.acctnum = t1.acctnum-1
WHERE t2.acctnum IS NULL;
Конечно, это не находит все неиспользованные значения, только набор из них на 1 меньше, чем число, которое используется. Но этого может быть достаточно для работы.
Ответ @Alex Howansky дает вам все неиспользуемые значения, но может возвращать большой набор строк.