Mysql使用相同的值连接行
表分数 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----1Mysql使用相同的值连接行,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 但是,是否也可以删除分数列并将分数放在不同的年份列
我不会得到下面的分数,但一个分数出现,另一个分数松动: 身份证 第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。