MySQL 多行数据合并 GROUP_CONCAT
2021/5/15 2:25:23
本文主要是介绍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()函数必须对源数据进行分组,否则所有数据会被合并成一行
SELECT role_id, role_name,
(
SELECT GROUP_CONCAT(menu_name) FROM sys_menu m, sys_role_menu n WHERE m.menu_id = n.menu_id AND n.role_id =a.role_id
)
AS b FROM sys_role a
这篇关于MySQL 多行数据合并 GROUP_CONCAT的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享
- 2024-02-22docker mysql 5.7