首页 > 解决方案 > 在 MySql 中使用查询查找排名

问题描述

我知道之前也有人问过这个问题,但我尝试了所有这些问题,但没有人适合我,因为我的查询有点不同,因为它在查询中具有求和函数,需要得到总和,并以总和为基数来获得排名的用户。

所以我的问题是如何找到单个用户的排名我的表是这样的:

表格图像

目前我正在尝试使用此查询,但这给了我所有用户。

SELECT u.user_name as userName 
     , sum(taken_quiz_points) as totalPoints 
  FROM taken_quiz as q
     , users_app as u 
 WHERE q.taken_quiz_user_id = u.user_id  
 GROUP 
    BY taken_quiz_user_id 
 ORDER 
    BY totalPoints DESC

标签: mysqlsql

解决方案


首先,当您从多个表中查询数据时,您应该使用 INNER JOIN。另外,我认为不可能 ORDER BY 别名,您必须重复别名的操作。如果您想获得单个用户的排名,则必须添加 WHERE 条件,例如WHERE u.name = "toto"或其他内容。

你应该最终得到这个:

SELECT 
   u.user_name as userName ,
   sum(q.taken_quiz_points) as totalPoints 
FROM taken_quiz q 
INNER JOIN users_app u ON q.taken_quiz_user_id = u.user_id
WHERE u.name = "toto"  
GROUP BY q.taken_quiz_user_id 
ORDER BY sum(q.taken_quiz_points) DESC

推荐阅读