SELECT username
, progress_percent
, gold_count
, ROW_NUMBER() OVER (ORDER BY progress_percent DESC, gold_count DESC, modify_date DESC ) AS theRank
FROM mytable t
ORDER BY theRank
编辑2: 对于特定用户,只需将上述查询放入子查询并 SELECT 这个 Rank 你想要的。
SELECT s1.username, s1.progress_percent, s1.gold_count
FROM (
[above query here]
) s1
WHERE s1.theRank = <theRankYouWant>
1条答案
按热度按时间klh5stk11#
我很高兴有一天mysql5x被mysql8+完全取代了,mysql中有很多真正的窗口函数。不过,在那之前,对于mysql 5x/mariadb<10.2,您可以使用以下内容:
编辑:很显然,直到10.2之前,mariadb中才添加了窗口函数-s
如果您使用的是mysql 8+或mariadb 10.2+,则只需使用rank窗口函数:
编辑2:
对于特定用户,只需将上述查询放入子查询并
SELECT
这个Rank
你想要的。或者