[英]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.