Mysql选择Next和Prev行不按ID排序

Luc*_*uca 7 mysql select row next

我有一个由NAME命令的查询返回smt,如下所示:

 ID     NAME
2121927 AAA
2123589 AAB
2121050 AAC
2463926 BBB ---> known ID
2120595 CCC
2122831 DDD
2493055 EEE
2123583 EEF
Run Code Online (Sandbox Code Playgroud)

我需要知道下一个ID和已知ID && NAME的prev ID(如果存在)如何只用1个查询?

zer*_*kms 12

  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
Run Code Online (Sandbox Code Playgroud)

如果您不知道特定BBB name字段值 - 您可以用子查询替换它,例如SELECT name FROM table WHERE id = 42,42已知ID值.