现在我有这个:
SELECT
@rownum := @rownum + 1 AS rownum,
T1.*
FROM
(
SELECT user.username, points
FROM scores
JOIN users AS user ON user.id = scores.user_id
) AS T1, (SELECT @rownum := 0) AS r
ORDER BY T1.points DESC, rownum ASC
这将返回用户名、点数和行号。点是有序的,但行号都是乱七八糟的。如果我将order by放入嵌套的select中,那么行numers是有序的,而点不是。所以我需要改变的是,我得到的分数按降序排列,行号按升序排列,我要创建的是排行榜,这样用户的得分最多的是第一位等等。
2条答案
按热度按时间beq87vna1#
这是你想要的吗?
基本上,这只是在子查询中保留顺序。
如果
points
不是数字,那就用ORDER BY (s.points + 0) DESC
在子查询中。或者将数据固定为数字。pbossiut2#
看来你需要你的帮助
rownum
与…配对points
已经预定了。所以你需要搬家ORDER BY
在points
进入嵌套选择: