group by、group_concat()、if()
- 现有一培训课程表,表结构如下:
字段名 | 类型 | 长度 | 主键 | 备注 |
---|---|---|---|---|
id | varchar | 32 | √ | |
trainName | varchar | 255 | 培训课程名称 | |
insideTeacher | varchar | 255 | 内部讲师姓名 | |
outsideTeacher | varchar | 255 | 外部讲师姓名 | |
insideOrOutside | varcher | 2 | 讲师型(0:内部?讲师1:外部讲师) |
- 表中有如下数据:
-
现在需要获取如下格式的数据:
|trainName|trainTeacher|
-
思路:
- 需要根据trainName对数据进行分组;
- 使用group_concat()方法对分组数据进行拼接;
- 使用if()判断使用insideTeacher还是outsideTeacher进行拼接。
- 实施:
SELECT
t.trainName,
GROUP_CONCAT(
IF
( t.insideOrOutside = 0, t.insideTeacher, t.outsideTeacher )) as trainTeacher
FROM
`trainteacher` t
GROUP BY
t.trainName
- 结果: