Specificare quale rdbms stai usando non guasterebbe.
Ad esempio in mysql se vuoi estrarre il valore precedente e quello successivo a un determinato valore puoi fare così
codice:
select id from tabella where id < x order by id desc limit 1
union all
select id from tabella where id > x order by id asc limit 1
dove x è il tuo valore.
Se invece stai usando mssql non esiste la clausola limit ma devi sostituirla con top.
La query dovrebbe essere una cosa del genere
codice:
select top 1 id from tabella where id < x order by id desc
union all
select top 1 id from tabella where id > x order by id asc