之前和之后的MySQL第一行id大于当前行

之前和之后的MySQL第一行id大于当前行,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,您好,我希望添加一个名为MMV的列,该列将标识大于该值的当前行之前和之后的第一行。如果没有适用的行,请使用表大小的最大值和最小值。结果将是两次计算中的最小值 下图显示了订单19-31,但注释基于50个条目的表格。只是excel上的一个简单示例 希望有人能帮忙 提前谢谢 一个想法是使用相关子查询 使用其中两个,然后使用最小值取较小值: 或在一个子查询中使用条件聚合,即基于条件计数/相加: select idorder, ordervalue, ( select least(

您好,我希望添加一个名为MMV的列,该列将标识大于该值的当前行之前和之后的第一行。如果没有适用的行,请使用表大小的最大值和最小值。结果将是两次计算中的最小值

下图显示了订单19-31,但注释基于50个条目的表格。只是excel上的一个简单示例

希望有人能帮忙

提前谢谢


一个想法是使用相关子查询

使用其中两个,然后使用最小值取较小值:

或在一个子查询中使用条件聚合,即基于条件计数/相加:

select 
  idorder, 
  ordervalue,
  (
    select least(m.idorder - sum(m1.idorder < m.idorder), 
                 sum(m1.idorder > m.idorder) - m.idorder)
    from mytable m1
    where m1.ordervalue > m.ordervalue
  ) as mmv
from mytable m;
第二个查询使用MySQL的true=1,false=0

select 
  idorder, 
  ordervalue,
  (
    select least(m.idorder - sum(m1.idorder < m.idorder), 
                 sum(m1.idorder > m.idorder) - m.idorder)
    from mytable m1
    where m1.ordervalue > m.ordervalue
  ) as mmv
from mytable m;