使用mysql在id周围的行之前和之后选择

时间:2012-04-11 07:25:02

标签: mysql sql

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

示例:

表中的ID:

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

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

4, 5, 9, 11, 15

谢谢!

1 个答案:

答案 0 :(得分:17)

可能的解决方案是

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

SQL声明

SELECT ABS(ID - 9), *
FROM   MyTable
ORDER BY
       ABS(ID - 9)
LIMIT  5

修改 (thx到ypercube指出此解决方案中可能存在的缺陷)

如果意图是从左边获得2个id并从右边获得两个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