【发布时间】:2020-07-13 08:12:56
【问题描述】:
我一直在尝试返回 SQL 查询的排名。
SELECT c.id, c.score, i.sheetscore, @curRank := @curRank + 1 AS rank
FROM chart c LEFT JOIN indicator as i
ON c.indicator_id = i.id, (
SELECT @curRank :=0
) q
ORDER BY c.score DESC, i.sheetscore DESC
;
最后一行应显示正确显示的排序排名。我应该看到 Rank = 1,2,3 但我得到了这个...我已经尝试了 SQL 语句的多种变体,但我无法找到解决方案。
'ID','SCORE','SHEETSCORE', 'RANK'
'11767', '1', '0.7325', '11767'
'11765', '1', '0.7325', '11765'
'8365', '1', '0.6925', '8365'
'8363', '1', '0.6925', '8363'
'8615', '1', '0.6875', '8615'
'8617', '1', '0.6875', '8617'
'11646', '1', '0.685455', '11646'
'11647', '1', '0.685455', '11647'
理想情况下,我会使用此查询:
SELECT RANK from Chart where ID= 11646 ## as an example
【问题讨论】:
-
考虑升级到 MySQL 8+。
-
@TimBiegeleisen - 我受到 Windows Dev 设置的限制......而且我的提供商仍然只支持 5.7.23