gpt4 book ai didi

mysql - 返回所需 ID 上方 2 行和下方 2 行

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

我在堆栈上找到了这个问题的一些答案,但没有一个有效。我可以说我对 mysql 相当了解,但还不足以完成这项工作。

好了,我有一个看起来像这样的表:

id | Name | Sales
---|------|------
0 | Tim | 9
1 | Jim | 5
2 | Joe | 3
3 | Ryan | 6
4 | Phil | 7
5 | James| 1

请注意,ID-s 将来可能不按顺序排列,因此它可能是 1、4、10、11、12 等,仍然是唯一的,但不会像 +1 那样递增,因为用户删除了一些内容并添加了其他内容东西。

现在我想选择和 ID(例如 3)并获取其上方和下方的两行。如果 ID 为 0,则选择 0 下方的 4 行(因此始终为 5 行)。

更新天哪,我太蠢了。我不需要通过 ID 选择上下两行,我需要通过销售额来选择它们。但仍然需要根据销售情况从特定 ID 芽向上和向下排。对不起大家。不过我仍然需要帮助。

最佳答案

如果您想按 id 顺序执行此操作,则有点棘手,因为条件总是获得 4 行。这是一种方法。这个想法是在 id 之前选择最多 4 个,在 id 之后选择最多 4 个,以及 id 本身。然后,使用 MySQL 变量枚举行。

最后的选择选择枚举值 0、1 和 2。这应该正好产生 5 行:

select t.*
from ((select t.*, @rn1 := @rn1 + 1 as rn
from t cross join
(select @rn1 := 0) const
where id < MYID
order by id desc
limit 4
) union all
(select t.*, @rn2 := @rn2 + 1 as rn
from t cross join
(select @rn2 := 0) const
where id > MYID
order by id
limit 4
) union all
(select t.*, 0 as rn
from t
where id = MYID
)
) t
where rn <= 2;

关于mysql - 返回所需 ID 上方 2 行和下方 2 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20815655/

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