简体   繁体   English

向查询中的联接表添加排名

[英]Add ranking to joined tables in query

My working query is: 我的工作查询是:

SELECT tulemus.liige_id, liige_v.liige_id, liige_v.Eesnimi, liige_v.Perekonnanimi, punktid, SUM(punktid) AS punktidkokku FROM tulemus 
INNER JOIN liige_v on tulemus.liige_id = liige_v.liige_id
GROUP BY tulemus.liige_id
order by punktidkokku desc

with this compound all results for user id ( liige_id) from table "tulemus", How can I add the ranking as well for the table of results? 将此化合物与“ tulemus”表中用户ID(liige_id)的所有结果一起使用时,如何为结果表添加排名?

You can add a variable for this. 您可以为此添加一个变量。 For a group by , I think it is better to do this using a subquery: 对于group by ,我认为最好使用子查询来做到这一点:

SELECT tv.*,
       (@rn := @rn + 1) as ranking
FROM (SELECT tulemus.liige_id, liige_v.Eesnimi, 
             liige_v.Perekonnanimi, punktid, SUM(punktid) AS punktidkokku
      FROM tulemus INNER JOIN
           liige_v
           ON tulemus.liige_id = liige_v.liige_id
      GROUP BY tulemus.liige_id
     ) tv CROSS JOIN
     (SELECT @rn := 0) vars
ORDER BY punktidkokku desc;
select *, @rank := @rank + 1 as rank
from
(
    SELECT tulemus.liige_id, 
           liige_v.liige_id, liige_v.Eesnimi, liige_v.Perekonnanimi, 
           punktid, SUM(punktid) AS punktidkokku           
    FROM tulemus 
    INNER JOIN liige_v on tulemus.liige_id = liige_v.liige_id    
    GROUP BY tulemus.liige_id
    order by punktidkokku desc
) tmp
CROSS JOIN (select @rank := 0) r

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM