9

我需要使用 mySQL 获取 ID 周围的 ID。

例子:

表中的ID:

2, 4, 5, 9, 11, 15, 19, 22, 25

例如,我需要知道 ID 9 周围的 5 个 ID。查询应返回:

4, 5, 9, 11, 15

谢谢!

4

1 回答 1

16

一个可能的解决方案是

  • 计算每个 id 减去你的 ID 的绝对值。
  • 对结果进行排序并将结果集限制为 5 条记录。

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
于 2012-04-11T07:29:01.587 回答