Penso che la cosa più semplice sarebbe avere una tabella fittizia/temporanea con solo ID. 1-1000 quindi a sinistra unisciti a quella tabella.
Ma assicurati di rimuovere i record "cancellati" dalla tua tabella fittizia/temporanea una volta terminato. In caso contrario, verranno visualizzati ogni volta.
>> MODIFICA << Puoi iscriverti da solo per capire se ti mancano gli ID....
select a.id + 1 MissingIds
from <table> a
left join <table> b
on a.id = b.id - 1
where b.id is null
and a.id < 10000