我的表格看起来像这样:
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;”来增加此限制。这将允许您一次排列更多行。
答案 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