Probabilmente potrebbe semplicemente usare UNION e quindi tagliare i risultati extra nel codice procedurale che mostra i risultati (poiché ciò restituirà 20 righe nei casi non edge):
(SELECT
*
FROM photos
WHERE ID < #current_id#
ORDER BY ID DESC LIMIT 10)
UNION
(SELECT *
FROM photos
WHERE ID >= #current_id#
ORDER BY ID ASC LIMIT 10)
ORDER BY ID ASC
EDIT:Aumentato il limite a 10 su entrambi i lati dell'UNIONE, come suggerito da le dorfier .
EDIT 2:modificato per riflettere meglio l'implementazione finale, come suggerito da Dominic.