我需要通过mySQL获取某个ID附近的ID。
示例:
表中的ID:
示例:
表中的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指出此解决方案可能存在的缺陷)
如果意图是从左侧获取两个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
ORDER BY ABS(id - @id)
,其中@id
是特定的 id(例如示例中的9
)。 - ypercubeᵀᴹ@
是 SQL Server 语法。如果我错了,请纠正我。 - Lieven KeersmaekersWHERE ABS(ID - 9) BETWEEN -3 AND 3
并移除了LIMIT 5
。 - Hugo Demiglio*
符号处出错,第二个查询在UNION
关键字处出错。 - Tejes