如果我在sql表中有一个随机值表,我怎样才能将它们导出并显示为raking而不是绝对值...例如..如果三个值是30 85和90我怎么办?获得30显示为1或1,85显示为2或2等
答案 0 :(得分:2)
MySQL没有分析功能支持(ROW_NUMBER,RANK,DENSE_RANK),这通常是您对这些要求的使用。
使用:
SELECT @rownum := @rownum + 1 AS ranking
FROM YOUR_TABLE t
JOIN (SELECT @rownum := 0) r
ORDER BY t.value
示例:
SELECT x.num,
@rownum := @rownum + 1 AS ranking
FROM (SELECT 30 AS num
UNION ALL
SELECT 85
UNION ALL
SELECT 90) x
JOIN (SELECT @rownum := 0) r
ORDER BY x.num
您可以使用:
SELECT (SELECT COUNT(*)
FROM YOUR_TABLE b
WHERE b.value <= a.value) AS ranking
FROM YOUR_TABLE a
...但重复项的排名值相同。而且你必须确保价值比较的方向正确。
答案 1 :(得分:1)
尝试:
set @i = 0;
select myValue,
@i:=@i+1 as Ranking
from myTable
order by myValue ASC