使用sql中的group关键字在单行中检索数据

new*_*ser 1 mysql sql

假设我有一个包含列和数据的表tbl_marks,如下所示.

name    id  section1 section2 section3 section4      year
cherry   1      100      101      102      103       2016
cherry   1      200      201      202      203       2015
cherry   1      300      301      302      303       2014
Run Code Online (Sandbox Code Playgroud)

预期输出格式:

cherry 1 100101102103 200201202203 300301302303
Run Code Online (Sandbox Code Playgroud)

我希望将一年中所有部分的分数连接起来,然后以空格分隔另一年的分数.所以我需要单列5列.(姓名,身份证,第1年分数,第2年分数,第3年分数)

请让我知道如何更新下面的查询.谢谢.

查询:选择名称,ID,??? 来自tbl_marks group by id;

Tim*_*sen 5

用途GROUP_CONCAT:

SELECT name,
       id,
       GROUP_CONCAT(CONCAT(section1, section2, section3, section4)
                    ORDER BY section1 SEPARATOR ' ')
FROM yourTable
GROUP BY name, id
Run Code Online (Sandbox Code Playgroud)

这个答案假定您希望在结果集中三列,三列作为name,id以及那名/ ID组标记的CSV列表(123,456,789在这种情况下).

SQLFiddle

(由@Luke提供)