如何使用MySQL按喜爱课程分组创建合并姓名的新表?
实现MySQL分组合并姓名并创建新表
要实现将student表中按FAVORITE分组、合并同课程姓名为逗号分隔字符串,并创建favorite新表的需求,核心是使用MySQL的GROUP_CONCAT()函数,以下是两种可行方案:
方案一:先建表再插入数据
先定义favorite表的结构,再将分组查询的结果插入表中:
-- 创建favorite表 CREATE TABLE favorite ( FAVORITE VARCHAR(50), NAME VARCHAR(255) ); -- 插入分组合并后的数据 INSERT INTO favorite (FAVORITE, NAME) SELECT FAVORITE, GROUP_CONCAT(NAME SEPARATOR ', ') AS NAME FROM student GROUP BY FAVORITE;
方案二:直接通过查询结果创建表
一步完成表创建和数据插入,无需单独定义表结构:
CREATE TABLE favorite AS SELECT FAVORITE, GROUP_CONCAT(NAME SEPARATOR ', ') AS NAME FROM student GROUP BY FAVORITE;
补充说明
GROUP_CONCAT()默认使用逗号分隔,这里显式指定SEPARATOR ', '是为了匹配示例中姓名间带空格的格式;- 如果需要对合并的姓名进行排序,可在函数内添加
ORDER BY,例如:GROUP_CONCAT(NAME ORDER BY NAME SEPARATOR ', '); - 若
student表中存在FAVORITE为NULL的记录,可通过WHERE FAVORITE IS NOT NULL过滤掉这类数据。
内容的提问来源于stack exchange,提问作者dhanyn10
相关产品推荐
相关产品推荐

