我需要使用 mySQL 获取 ID 周围的 ID。
例子:
表中的ID:
2, 4, 5, 9, 11, 15, 19, 22, 25
例如,我需要知道 ID 9 周围的 5 个 ID。查询应返回:
4, 5, 9, 11, 15
谢谢!
一个可能的解决方案是
SQL 语句
SELECT ABS(ID - 9), *
FROM MyTable
ORDER BY
ABS(ID - 9)
LIMIT 5
编辑 (感谢 ypercube 指出此解决方案中可能存在的缺陷)
如果意图是从左侧获取 2 个 id,从右侧获取 2 个 id,则可以将语句调整如下
SELECT * FROM MyTable WHERE ID <= 9 ORDER BY ID DESC LIMIT 3
UNION ALL
SELECT * FROM MyTable WHERE ID > 9 ORDER BY ID ASC LIMIT 2