MySQL显示多列的排名

时间:2014-10-21 03:00:01

标签: mysql database

我的表格看起来像这样:

Name Height Weight
Jim  60     150
Tom  62     170
Mac  64     160

我想找一个返回如下内容的查询:

Name Height Weight Height_Rank Weight_Rank
Jim  60     150    3           3
Tom  62     170    2           1
Mac  64     160    1           2

如上所述,显示多列排名的最佳方法是什么?我可以使用order by来查找单个列的排名,但我希望在单个表中具有多个列的排名。谢谢!

编辑: 下面的答案是一个很好的解决方案。但是,如果您排名数千行,您可能会遇到另一个问题。 “group_concat”的最大长度为1024字节。您可以通过运行“SET SESSION group_concat_max_len = 1000000;”来增加此限制。这将允许您一次排列更多行。

1 个答案:

答案 0 :(得分:1)

使用像这样的东西..

SELECT Name,Height,Weight,FIND_IN_SET( Height,( SELECT GROUP_CONCAT( Height ORDER BY Height DESC ) FROM scores )) AS Height_Rank,FIND_IN_SET( Weight,( SELECT GROUP_CONCAT( Weight ORDER BY Weight DESC ) FROM scores ) ) AS Weight_Rank FROM scores