首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql排名,具有上下级

Mysql排名,具有上下级
EN

Stack Overflow用户
提问于 2012-09-26 08:47:55
回答 2查看 123关注 0票数 0

我想使用mysql查询从表中获得范围排名。

桌子是这样的,

代码语言:javascript
复制
+------------+------+
| first_name | age  |
+------------+------+
| Kathy      |   2  |
| Jane       |   1  |
| Nick       |   3  |
| Bob        |   5  |
| Anne       |   4  |
| Jack       |   6  |
| Bill       |   8  |
| Steve      |   7  |
+------------+------+

我想得到杰克的排名,有两个排名靠后和排名靠前。

代码语言:javascript
复制
+------------+------+
| Anne       |   4  |
| Bob        |   5  |
| Jack       |   6  |
| Steve      |   7  |
| Bill       |   8  |
+------------+------+

你知道如何为MySQL数据库编写这个查询吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-26 09:04:40

这是一种非常丑陋的方法,它是通过对记录应用行号来实现的。通过将行号应用于记录,您将能够在年龄不连续时返回行(使用Non-consecutive ages演示):

代码语言:javascript
复制
select age, first_name
from 
(
  select t1.age, t1.first_name, @rownum:=@rownum+1 AS rownum
  from yourtable t1, (SELECT @rownum:=0) r
  order by t1.age
) x
where rownum  >= (select rownum
                  from 
                  (
                    select t.age, 
                      t.first_name, 
                      @rownum:=@rownum+1 AS rownum
                    from yourtable t, (SELECT @rownum:=0) r
                    order by t.age
                  ) x
                  where first_name = 'jack') - 2
 and rownum  <= (select rownum
                    from 
                    (
                      select t.age, 
                        t.first_name, 
                        @rownum:=@rownum+1 AS rownum
                      from yourtable t, (SELECT @rownum:=0) r
                      order by t.age
                    ) x
                    where first_name = 'jack') + 2;

请参阅SQL Fiddle with Demo

票数 3
EN

Stack Overflow用户

发布于 2012-09-26 09:02:39

工作示例:

代码语言:javascript
复制
SELECT * FROM yourtable WHERE id BETWEEN ((SELECT id FROM yourtable WHERE name = 'Jack') - 2) AND ((SELECT id FROM yourtable WHERE name = 'Jack') + 2);

SQL Fiddle Demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12593094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档