繁体   English   中英

MySQL连接具有相同值的行

[英]Mysql join rows with same values

表分数

ID SCORE Year_1 Year_2 Year_3

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

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

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

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

首先,当分数相同时,我想加入ID上的行,因此在下面的示例中ID 2有一行。

ID SCORE Year_1 Year_2 Year_3

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

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

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

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

ID Year_1 Year_2 Year_3

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

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

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

我在答案中使用命令后遇到的一个问题是,我的成绩不及格。 当表格是这样并且一年中有多个分数时:

ID SCORE Year_1 Year_2 Year_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


我不会得到以下结果,但是出现一个得分并失去了其他得分:

ID Year_1 Year_2 Year_3

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

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

尝试这个

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM