Mysql使用相同的值连接行

Mysql使用相同的值连接行,mysql,join,rows,Mysql,Join,Rows,表分数 ID分数 第1年第2年第3年 1----A----1----0----0 1----C----0----0----1 2----B----1----1----0 2----B----0----0----1 首先,当分数相同时,我想加入ID上的行,这样在下面的示例中,ID2有一行 ID分数 第1年第2年第3年 1----A----1----0----0 1----C----0----0----1 2----B----1----1----1 但是,是否也可以删除分数列并将分数放在不同的年份列

表分数

ID分数 第1年第2年第3年

1----A----1----0----0

1----C----0----0----1

2----B----1----1----0

2----B----0----0----1

首先,当分数相同时,我想加入ID上的行,这样在下面的示例中,ID2有一行

ID分数 第1年第2年第3年

1----A----1----0----0

1----C----0----0----1

2----B----1----1----1

但是,是否也可以删除分数列并将分数放在不同的年份列中,如下所示

身份证 第1年第2年第3年

1----A----0----C

2----B----B----B

=========================================================================

在使用答案中的命令后,我遇到了一个问题,我失去了分数。 如表所示,一年内有多个分数:

ID分数 第1年第2年第3年

1----A----1----0----0

1----B----1----0----0

1----C----0----0----1

2----B----1----1----0

2----B----0----0----1


我不会得到下面的分数,但一个分数出现,另一个分数松动:

身份证 第1年第2年第3年

1---A,B---0---C

试一下这个

SELECT id
      ,score
      ,Max(year_1) year_1
      ,Max(year_2) year_2
      ,Max(year_3) year_3
 FROM scores
 GROUP BY id,score
第二个:

SELECT id
      ,group_concat(year_1) year_1
      ,group_concat(year_2) year_2
      ,group_concat(year_3) year_3
  FROM (
    SELECT id
         , CASE WHEN Max(year_1)=1 THEN Max(score) END AS year_1
         , CASE WHEN Max(year_2)=1 THEN Max(score) END AS year_2
         , CASE WHEN Max(year_3)=1 THEN Max(score) END AS year_3
      FROM scores
     GROUP BY id ,score
) as tbl2
GROUP BY id

在第二条语句中,必须使用ifnull函数来获得0分,而不是NULL。