找到mysql中连接行的排名

时间:2016-09-27 02:12:31

标签: php mysql sql

我在两行中都有一个包含连接值的表,因此我唯一地检索表中每一行的排名。

更新 其他表已添加到问题

   | NID         |   Ages       |  Group   |    
   | 1           |  84          |    1     |
   | 2           |  64          |    1     |
   | 3           |  78          |    1     |
   | 1           |  63          |    2     |
   | 2           |  25          |    2     |
   | 3           |  87          |    2     |
   | 1           |  43          |    3     |
   | 2           |  62          |    3     |
   | 3           |  37          |    3     |

MainTable

     | Names         |   Ages       |  Group   |  Ranking   |   
     | Mu,Ni,ices    |  84,64,78    |    1     |  1,3,2     |
     | Mu,Ni,ices    |  63,25,87    |    2     |  2,3,1     |
     | Mu,Ni,ices    |  43,62,37    |    3     |  2,1,3     |

现在第一个名字等同于表格中的第一个年龄,我可以使用php和foreach语句将它们等同起来。现在问题在于每个组的年龄排名。我在每行或每组上对名称进行排名。

预期的结果

GROUP_CONCAT

在我解决这个问题的过程中,我正在使用 SELECT GROUP_CONCAT(Names) NAMES, GROUP_CONCAT(Ages) AGES, GROUP_CONCAT(Group) GROUPS, GROUP_CONCAT( FIND_IN_SET(Ages, ( SELECT GROUP_CONCAT( Age ORDER BY Age DESC) FROM ( SELECT GROUP_CONCAT(Ages ORDER BY Ages DESC ) Age FROM `MainTable` s GROUP by `Group` ) s ) )) rank FROM `MainTable` c GROUP by `Group` ,我已经能够在以下查询中达到这个级别

     | Names         |   Ages       |  Group   |  Ranking   |   
     | 1,2,3         |  84,64,78    |    1     |  7,9,8     |
     | 1,2,3         |  63,25,87    |    2     |  5,6,4     |
     | 1,2,3         |  43,62,37    |    3     |  2,1,3     |

这实际上给了我以下结果。

c.Param("name")

唯一的问题是排名值从1增加到9而不是唯一地排列每一行。它有什么想法可以帮助我跨越并解决这个问题?我很感激你的帮助。感谢

0 个答案:

没有答案