将重复的行转换为mysql中的列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将重复的行转换为mysql中的列相关的知识,希望对你有一定的参考价值。
我有2个表,学生表包含regNo和name列;和reg_subject表,其中包含学生单独注册的科目列表。学生可以注册多个科目。
我想生成一个将连接两个表的表,以便reg_subject表将以行将转为列的方式进行转置。下面列出了两个表以及结果表。
学生表
| regNo | name |
_________________
| 1001 | Saleh |
-----------------
| 1002 | Moses |
-----------------
| 1003 | Hafsa |
reg_subject表
| regNo | subject |
____________________
| 1001 | English |
--------------------
| 1001 | Math |
--------------------
| 1002 | English |
--------------------
| 1003 | Math |
--------------------
| 1002 | Math |
--------------------
| 1003 | Physics |
--------------------
| 1001 | Physics |
--------------------
| 1002 | Physics |
--------------------
转置的连接表应如下所示:
The transposed joint table
| regNo | name | subject1 | subject2 | subject3 |
__________________________________________________
| 1001 | Saleh | English | Math | Physics |
--------------------------------------------------
| 1002 | Moses | English | Math | Physics |
--------------------------------------------------
| 1003 | Hafsa | | Math | Physics |
--------------------------------------------------
答案
SELECT regNo, name,
MAX( CASE WHEN subject = 'English'
THEN subject
END) as subject1,
MAX( CASE WHEN subject = 'Math'
THEN subject
END) as subject2,
MAX( CASE WHEN subject = 'Physics'
THEN subject
END) as subject3
FROM YourTable
GROUP BY regNo, name
以上是关于将重复的行转换为mysql中的列的主要内容,如果未能解决你的问题,请参考以下文章