【发布时间】:2013-11-18 21:49:34
【问题描述】:
我有带有 id 的表(存储用户 id)并在不同的匹配中得分。我想要一个用户的位置。
所以我试试这个sql fiddle; 在这我得到了所有的行,但我只需要 id 为 3 的用户并且它在表中的位置。
像这样:
Score Postion
26 3
即使我尝试这样做但没有成功
【问题讨论】:
标签: mysql
我有带有 id 的表(存储用户 id)并在不同的匹配中得分。我想要一个用户的位置。
所以我试试这个sql fiddle; 在这我得到了所有的行,但我只需要 id 为 3 的用户并且它在表中的位置。
像这样:
Score Postion
26 3
即使我尝试这样做但没有成功
【问题讨论】:
标签: mysql
我得到了答案:http://sqlfiddle.com/#!2/b787a/2
select * from (
select T.*,(@rownum := @rownum + 1) as rownum from (
select sum(score) as S,id from mytable group by id order by S desc ) as T
JOIN (SELECT @rownum := 0) r
) as w where id = 3
更新了 sqlfiddle 及以上查询。现在它运行良好。
【讨论】:
我认为这应该可以解决问题:
SELECT totalScore, rownum FROM (
SELECT id,sum(score) AS totalScore,(@rownum := @rownum + 1) AS rownum
FROM mytable
JOIN (SELECT @rownum := 0) r
group by id) result
WHERE result.ID = 3;
【讨论】:
只需添加一个 where 子句
select x.id,x.sum,x.rownum
from(
select id,sum(score) as sum,(@rownum := @rownum + 1) as rownum
from mytable
JOIN (SELECT @rownum := 0) r
group by id
) x
where id =3
【讨论】: