MySQL显示多个列的列

MySQL显示多个列的列,mysql,database,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 我想找到一个返回如下内容的查询: Name Height

我的桌子是这样的:

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
我想找到一个返回如下内容的查询:

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
如上所述,显示多个列的排名的最佳方式是什么?我可以使用ORDERBY查找单个列的排名,但我希望在单个表中有多个列的排名。谢谢

编辑:
下面的答案是一个很好的解决方案。然而,如果你对数千行进行排名,你可能会遇到另一个问题。“group_concat”的最大长度为1024字节。您可以通过运行“设置会话组\u concat\u max\u len=1000000;”来增加此限制。这将允许您一次对多行进行排序

使用像这样的东西

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

似乎每个附加列都需要一个嵌套查询,如图所示。谢谢!这就是我要找的,但我希望有更好的方法。几分钟后,我会告诉你如何使用你的表名这就是我使用过的表名。在这里使用你的表名,并让我知道它是否有效。。