I have a query ordered by NAME that return smt like this:
ID NAME
2121927 AAA
2123589 AAB
2121050 AAC
2463926 BBB ---> known ID
2120595 CCC
2122831 DDD
2
SELECT *,
'next'
FROM table
WHERE `name` > 'BBB'
ORDER BY `name`
LIMIT 1
UNION
SELECT *,
'previous'
FROM table
WHERE `name` < 'BBB'
ORDER BY `name` DESC
LIMIT 1
If you don't know particular BBB
name
field value - you could replace it with subquery like SELECT name FROM table WHERE id = 42
, where 42
is the known ID
value.