MySQL 查询获取同级

标签 mysql

我需要一个查询来获取某个 ID 之前的单个项目以及该 ID 之后的一个项目。

例如,我有五行,id为1到5,我需要在id 3之前和之后选择id,这样我就得到2和4作为结果。

有没有办法通过单个查询来完成此操作?

编辑:

我忘了告诉大家,也许结果不是 sibling ,而是符合条件的下一个 sibling :

SELECT routeId FROM routes WHERE routeId>::p0:: AND assetKmId<>'0'

所以下一个或上一个同级应该匹配 assetKmId<>'0' (这个 RouteId>::p0::在这种情况下当然无效)

最佳答案

为什么不使用最大值、最小值和并集结果

SELECT min(routeId) FROM routes WHERE routeId>::p0:: AND assetKmId<>'0' 
UNION 
SELECT max(routeId) FROM routes WHERE routeId<::p0:: AND assetKmId<>'0'

关于MySQL 查询获取同级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1807971/

相关文章:

c# - dotnet core 2.2版本中如何使用MySql.Data引用

php - SQL 语法错误。尝试显示表和字段名称

mysql - 行排名之间的关系

php: mysql 数据库连接正常但无法执行查询

javascript - 如何在堆叠条形图中为每个日期范围显示多个堆叠列

mysql - 如果在子行中找到匹配,则删除父行,mysql UNION

mysql - 为什么我在这个 MySQL 中需要 COUNT(DISTINCT ...)?

java - 反引号准备好的语句 Java

php - 链接下拉选项不会将以前的值拉入查询

php - 显示内容但不是最新内容