簡體   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