Mysql 使用SQL提取已排序请求的值

Mysql 使用SQL提取已排序请求的值,mysql,Mysql,我有一个带有姓名和年龄的sql表 Bob 28 Bryan 30 Jim 25 John 42 Bill 22 Sam 28 Tom 26 我想做一个sql命令,按年龄对所有人进行排序,在其中找到一个名字,返回前一个名字、已建立的名字和下一个名字及其位置 例如,承认我想找到Tom,我的请求应返回: Name Age Rank Jim 25 2 Tom 26 3 Bob 28 4

我有一个带有姓名和年龄的sql表

Bob     28
Bryan   30
Jim     25
John    42
Bill    22
Sam     28
Tom     26
我想做一个sql命令,按年龄对所有人进行排序,在其中找到一个名字,返回前一个名字、已建立的名字和下一个名字及其位置

例如,承认我想找到Tom,我的请求应返回:

Name    Age     Rank
Jim     25      2
Tom     26      3
Bob     28      4
吉姆排名第二,因为比尔是最小的

有可能这样做吗


提前感谢您的帮助

SQL不适合基于行的操作。在单个查询中“查找某个条件为true的行,然后返回上一行”并不是一个简单的方法。不过,您可以通过几个步骤来完成:

a) 运行一个查询以检索“Tom”及其年龄(26)

b) 运行另一个查询以获取下一位老年人
从中选择姓名、年龄。。。如果年龄>26,则按年龄ASC限额1订购

c) 重复,但下一个年轻人:
从中选择姓名、年龄。。。其中年龄<26按年龄描述限值排序1


这将吸引至少1岁/更年轻的人。。。您没有指定如果有多个年龄相同的人(例如Fred也是26岁,Doug和Elmer都是25岁)会发生什么情况,因此我忽略了这些条件。

如果数据库中有两个Tom怎么办?那么,您需要多少条记录,仍然是3条或全部?您可以在一个查询中使用
UNION
来加入您的结果。最后,我按照这个建议使用了一个增量变量