0

如果我在 sql 表中有一个随机值表,我如何将它们导出并显示为一个倾斜而不是绝对值......例如..如果三个值是 30 85 和 90 我如何得到 30显示为 1 或 1,85 显示为 2 或 2 等

4

2 回答 2

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

...但重复项将具有相同的排名值。而且您必须确保值比较的方向正确。

于 2010-10-20T18:16:35.027 回答
1

尝试:

set @i = 0;
select myValue,
        @i:=@i+1 as Ranking
from myTable 
order by myValue ASC
于 2010-10-20T18:13:58.090 回答