gpt4 book ai didi

MySQL 前后第一行 id 大于当前行

转载 作者:行者123 更新时间:2023-11-29 02:42:23 25 4
gpt4 key购买 nike

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

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

希望有人能提供帮助。

提前致谢。

enter image description here

最佳答案

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

要么使用其中两个,然后使用 LEAST 取较小的值:

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

或者在一个带有条件聚合的子查询中(即根据条件计数/相加):

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。

关于MySQL 前后第一行 id 大于当前行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48960956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com