1. 程式人生 > 實用技巧 >MySQL++:MySQL 多行資料合併 GROUP_CONCAT

MySQL++:MySQL 多行資料合併 GROUP_CONCAT

表結構及資料:

DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`course_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES ('李明', '閱讀賞析');
INSERT INTO `course` VALUES ('李明', '攝影');
INSERT INTO `course` VALUES ('李明', '太極劍');
INSERT INTO `course` VALUES ('司馬光', '馬克思主義基本原理');
INSERT INTO `course` VALUES ('司馬光', '攝影');
INSERT INTO `course` VALUES ('葉問', '閱讀賞析');
INSERT INTO `course` VALUES ('葉問', '法語');

SET FOREIGN_KEY_CHECKS = 1;

選修課程表

select t.name as '姓名',t.course_name as '課程' from course t  ;

需求: 將每個人的課程合併為一行資料

select t.name as '姓名',GROUP_CONCAT(t.course_name )  as '課程' from course t  group by t.name ;

修改分隔符及排序

select t.name as '姓名',GROUP_CONCAT(t.course_name  order by t.course_name SEPARATOR '#')  as '課程' from course t  group by t.name 

注意:使用GROUP_CONCAT()函式必須對源資料進行分組,否則所有資料會被合併成一行