MySql将一些列合并到一行中

MySql将一些列合并到一行中,mysql,Mysql,我有一个员工表,如下所示: Emp_id Name Salary 1 Abc 10 2 Acd 90 3 Bcd 40 Degree_Id Degree_name College_Id College_name Emp_Id 1 UG 1 MIT 2 2 PG 3 Harvard 2 1

我有一个员工表,如下所示:

Emp_id Name Salary
1      Abc   10
2      Acd   90
3      Bcd   40
Degree_Id Degree_name College_Id College_name Emp_Id
1            UG           1          MIT          2
2            PG           3          Harvard      2
1            UG           1          MIT          1
2            PG           3          Harvard      1
Emp_Id  College_1  College_2
2        MIT        Harvard
1        MIT        Harvard
还有一个度表,如下所示:

Emp_id Name Salary
1      Abc   10
2      Acd   90
3      Bcd   40
Degree_Id Degree_name College_Id College_name Emp_Id
1            UG           1          MIT          2
2            PG           3          Harvard      2
1            UG           1          MIT          1
2            PG           3          Harvard      1
Emp_Id  College_1  College_2
2        MIT        Harvard
1        MIT        Harvard
上表存储了员工获取的各种学位

我需要如下输出:

Emp_id Name Salary
1      Abc   10
2      Acd   90
3      Bcd   40
Degree_Id Degree_name College_Id College_name Emp_Id
1            UG           1          MIT          2
2            PG           3          Harvard      2
1            UG           1          MIT          1
2            PG           3          Harvard      1
Emp_Id  College_1  College_2
2        MIT        Harvard
1        MIT        Harvard

我对此有什么疑问?我的数据库是MySql。

这里有一种方法可以实现类似的效果,但与您的期望不完全相同

SELECT
Emp_id,
GROUP_CONCAT(College_name ORDER BY College_name DESC SEPARATOR '  ') Colleges
FROM degree
GROUP BY Emp_id
ORDER BY Emp_id DESC;

mysql> SELECT
    -> Emp_id,
    -> GROUP_CONCAT(College_name ORDER BY College_name DESC SEPARATOR '  ') Colleges
    -> FROM degree
    -> GROUP BY Emp_id
    -> ORDER BY Emp_id DESC;
+--------+--------------+
| Emp_id | Colleges     |
+--------+--------------+
|      2 | MIT  Harvard |
|      1 | MIT  Harvard |
+--------+--------------+
2 rows in set (0.00 sec)

这里有一种实现类似效果的方法,但与您的期望不完全相同

SELECT
Emp_id,
GROUP_CONCAT(College_name ORDER BY College_name DESC SEPARATOR '  ') Colleges
FROM degree
GROUP BY Emp_id
ORDER BY Emp_id DESC;

mysql> SELECT
    -> Emp_id,
    -> GROUP_CONCAT(College_name ORDER BY College_name DESC SEPARATOR '  ') Colleges
    -> FROM degree
    -> GROUP BY Emp_id
    -> ORDER BY Emp_id DESC;
+--------+--------------+
| Emp_id | Colleges     |
+--------+--------------+
|      2 | MIT  Harvard |
|      1 | MIT  Harvard |
+--------+--------------+
2 rows in set (0.00 sec)

谢谢你的帮助,但是没有办法把学院信息放在不同的栏目里吗?@MayankPorwal检查这篇文章是否有用:谢谢你的帮助,但是没有办法把学院信息放在不同的栏目里吗?@MayankPorwal检查这篇文章是否有用:有多少学院?有没有可能有人在两所以上的大学就读过?哪些学院应该在
College\u 1
列中,哪些在
College\u 2
列中?@xpy。。雇员可以从任何数量的学院获得任何数量的学位。所有这些数据都将存储在Degrees表中。我需要找出一份清单,上面列出每个员工上过的大学数量。因此,College_1和College_2列可以根据员工的不同而增加。然后您需要
透视表,请参见此处:存在多少所学院?有没有可能有人在两所以上的大学就读过?哪些学院应该在
College\u 1
列中,哪些在
College\u 2
列中?@xpy。。雇员可以从任何数量的学院获得任何数量的学位。所有这些数据都将存储在Degrees表中。我需要找出一份清单,上面列出每个员工上过的大学数量。因此,列College_1和College_2可以根据员工的不同而增加。然后您需要透视表,请参见此处: