嗨,世界各地的编码员,
我正在做一个项目,用户可以在其中做某些事情并为此获得积分.为了简化这个问题,假设我们有2个表的用户和点.
-- table user -- table points
+---------------+ +-----------------------------+
| id | name | | id | points | user_id |
+---------------+ +-----------------------------+
| 1 Tim | | 1 5 1 |
| 2 Tom | | 2 10 1 |
| 3 Marc | | 3 5 1 |
| 4 Tina | | 4 12 2 |
| 5 Lutz | | 5 2 2 |
+---------------+ | 6 7 1 |
| 7 40 3 |
| 8 100 1 |
+-----------------------------+
现在要获取完整的高分列表,我使用以下查询
SELECT u.*, SUM( p.points ) AS sum_points
FROM user u
LEFT JOIN points p ON p.user_id = u.id
GROUP BY u.id
ORDER BY sum_points DESC
产生一个很好的高分列表,所有用户从头到尾
+------------------------------+
| id | name | sum_points |
+------------------------------+
| 1 Tim 127 |
| 3 Marc 40 |
| 2 Tom 14 |
| 4 Tina 0 |
| 5 Lutz 0 |
+------------------------------+
好回到问题本身.在单个用户的个人资料上,我想显示其在高分列表中的排名.
可以使用仅显示例如Tom(id = 2)排在第3位的单个查询来完成此操作吗?
非常感谢 :-)