如何在mysql的单行中显示多行的多个数据

时间:2012-07-28 14:08:31

标签: php

我有一个包含多行数据的表,这些数据属于单个用户。 例如:

            regno         course      score         session     semester
          03/01/02        Mth111       60            2            3
          03/01/02        MTH222       50            2            3
          03/04/05        MTH333       40            2            3
          03/04/05        MTH111       30            2            3

我希望以这种方式将每个regno的特定会话和学期的值显示在一行中:

      regno                    
    03/01/02            MTH111         MTH222
                          60             50

   03/04/05             MTH333          MTH111
                          40             30

我尝试使用group by ....使用带有mysql_fetch_assoc的foreach循环来获取列标题和group by子句......但只显示了一行。我怎么能解决这个问题。谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用以下

select regno, concat(course,'\n',score) as someName from table1

select regno, concat(course,'<br>',score) as someName from table1

如果您要显示HTML。

编辑:对了,我明白你的意思了。

select regno, group_concat(concat(course, '|', score)) as courses from table1 group by regno

SQLFiddle

的结果
03/01/02    Mth111|60,MTH222|50
03/04/05    MTH333|40,Mth111|30

答案 1 :(得分:0)

另一种解决方案是将这些记录引入程序并按照您需要的方式对其进行格式化。

通过这种方式,以后可以更容易理解和调试。