gpt4 book ai didi

Mysql连接具有相同值的行

转载 作者:行者123 更新时间:2023-11-30 23:14:08 27 4
gpt4 key购买 nike

表格分数

身份证分数 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 有一行。

身份证分数 Year_1 Year_2 Year_3

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

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

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

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

身份证 Year_1 Year_2 Year_3

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

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

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

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

身份证分数 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


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

身份证 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

关于Mysql连接具有相同值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18657682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com