我在两行中都有一个包含连接值的表,因此我唯一地检索表中每一行的排名。
更新 其他表已添加到问题
| 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而不是唯一地排列每一行。它有什么想法可以帮助我跨越并解决这个问题?我很感激你的帮助。感谢