gpt4 book ai didi

mysql - MySQL排序后如何选择更多行?

转载 作者:行者123 更新时间:2023-11-29 12:55:34 25 4
gpt4 key购买 nike

我有一个包含 10 个结果的表。我们来说说以下内容:

        id      user    number 
-- ---- ------

1 user1 10
2 user2 5
3 user3 30
4 user4 45
5 user5 5
6 user6 22
7 user7 10
8 user8 40
9 user9 90
10 user10 65

我基本上想按“数字”值对它们进行排序。

所以它应该是这样的:

        SORT    id      user    number 
---- -- ---- ------

1 2 user2 5
2 5 user5 5
3 1 user1 10
4 7 user7 10
5 6 user6 22
6 3 user3 30
7 8 user8 40
8 4 user4 45
9 10 user10 65
10 9 user9 90

排序后,我想从(例如)id = 6(其数字为22)的结果和其上方的2个其他结果(在本例中:id = 7和1)中选择*,并且下面有 2 个其他结果(在本例中:id = 3 和 8)。

所以当我搜索 id = 6 时,返回结果应该是这样的:

        SORT    id      user    number 
---- -- ---- ------

3 1 user1 10
4 7 user7 10
5 6 user6 22
6 3 user3 30
7 8 user8 40

如果我选择所有内容,我可以很容易地在服务器端执行此操作,但是这里会有大量数据,所以我宁愿只选择那些适合我的搜索的数据。

有什么方法可以用MySQL来做到这一点吗?

最佳答案

这是获得您想要的东西的典型方法:

select t.*
from ((select t.*
from table t
where number <= (select number where id = 6 limit 1)
order by number desc
limit 3
) union all
(select t.*
from table t
where id > (select number where id = 6 limit 1)
order by number asc
limit 2
)
) t
order by number;

这假设当出现重复项时,您仍然需要 5 行输出。它还假设前两行或最后两行少于五行是可以的。 id 上的索引将有助于提高此查询的性能。

关于mysql - MySQL排序后如何选择更多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24106932/

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