Mysql
使用一列進行排名。如果 2 行中的值相同,則使用另一列排名
我有一張桌子作為 table1
id| hits | time -------+--------+------ 1 | 9 | 40.89 2 | 5 | 33.21 3 | 5 | 78.31 4 | 1 | 71.93 5 | 4 | 23.10 6 | 4 | 99.99 7 | 8 | 12.32 8 | 7 | 32.64
我想使用命中對值進行排名,如果 2 行具有相同數量的命中,我想使用時間對它們進行排名 那是時間最短的具有更高的排名 這是預期的結果
id| hits | time | rank -------+--------+-------------- 1 | 9 | 40.89 | 1 2 | 5 | 33.21 | 4 3 | 5 | 78.31 | 5 4 | 1 | 71.93 | 8 5 | 4 | 23.10 | 6 6 | 4 | 99.99 | 7 7 | 8 | 12.32 | 2 8 | 7 | 32.64 | 3
任何幫助表示讚賞
SELECT *, RANK() OVER (ORDER BY hits DESC, `time` ASC) AS `rank` FROM table1 ORDER BY id