首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -如何获取行号

问MySQL -如何获取行号
EN

Stack Overflow用户
提问于 2016-05-04 12:04:22
回答 3查看 283关注 0票数 0

我有一张这样的桌子:

代码语言:javascript
复制
tb_bid_test
+-------------+---------------------+
| Field       | Type                |
+-------------+---------------------+
| username    | varchar(20)         |
| poin        | bigint(20)          |
+-------------+---------------------+

然后我运行这个查询:

代码语言:javascript
复制
select @r := @r+1 as rank, z.* from(SELECT username, sum(poin) as jumlahPoin FROM `tb_bid_test` GROUP BY username order by jumlahPoin desc limit 3 )z, (select @r:= 0)y;

结果是:

代码语言:javascript
复制
+--------+------------+--------------+
| rank   | username   |  jumlahPoin  |
+--------+------------+--------------+
|   1    |        neo |      500     |
|   2    |     andhie |      348     |
|   3    |       john |      123     |
+--------+------------+--------------+

我想得到一行用户名和this,如下所示:

代码语言:javascript
复制
+--------+------------+--------------+
| rank   | username   |  jumlahPoin  |
+--------+------------+--------------+
|   2    |      andhie|      348     |
+--------+------------+--------------+

或者其他人的用户名,并获得排名,如果我使用之前的代码,并添加where username ='andhie',排名始终是1。如何获得当前排名的基础上,他们的积分?

EN

回答 3

Stack Overflow用户

发布于 2016-05-04 12:45:45

使用值'andhie‘从结果用户名中选择

代码语言:javascript
复制
create table tb_bid_test (username varchar(20),poin bigint(20));
insert into tb_bid_test values ('neo',500);
insert into tb_bid_test values ('andhie',348);
insert into tb_bid_test values ('john',123);


select * from (
select 
@r := @r+1 as rank, 
z.* 
from(SELECT username, sum(poin) as jumlahPoin FROM `tb_bid_test` 
GROUP BY username order by jumlahPoin desc limit 3 )z, 
(select @r:= 0)y 
  ) as t where username ='andhie'

Try the fiddle here

票数 1
EN

Stack Overflow用户

发布于 2016-05-04 12:11:29

尝试此查询:

代码语言:javascript
复制
Select * from (select @r := @r+1 as rank, z.* from(SELECT username, sum(poin) as jumlahPoin FROM `tb_bid_test` GROUP BY username order by jumlahPoin desc limit 3 )z, (select @r:= 0)y;) where username="andhie"
票数 0
EN

Stack Overflow用户

发布于 2016-05-04 12:14:28

使用嵌套查询

代码语言:javascript
复制
SELECT *
FROM (
        SELECT @r := @r + 1 AS rank, z.*
        FROM (
                SELECT username, SUM(poin) AS jumlahPoin
                FROM tb_bid_test
                GROUP BY username
                ORDER BY jumlahPoin 
                DESC limit 3
        ) z,
        (SELECT @r := 0) y
    ) tbl
WHERE username = "andhie"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37018219

复制
相关文章

相似问题

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