1

我有一个表,其中包含属于各个用户的多行数据。例如:

            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 子句...但只显示了一行。我该如何解决。谢谢。

4

2 回答 2

0

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

这样以后会更容易理解和调试。

于 2012-07-28T14:42:20.117 回答
0

你可以使用以下

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

或者

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

如果您要显示为 HTML。

编辑:Righto,我明白你现在的意思了。

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
于 2012-07-28T14:10:47.310 回答