mysql将多条数据合并成一条

我会带着你远行 2024-03-25 23:24 161阅读 0赞

实现将多条数据合并为一条数据,在mysql中可以通过 GROUP_CONCAT 函数实现

解决方案:用

GROUP_CONCAT

  1. CREATE TABLE `edu_test` (
  2. `test_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '本表的主键',
  3. `courseware_ids` varchar(255) DEFAULT NULL COMMENT '课件ids',
  4. `courseware_types` varchar(255) DEFAULT NULL COMMENT '课件类型',
  5. PRIMARY KEY (`test_id`)
  6. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='测试主表';
  7. CREATE TABLE `edu_test_son` (
  8. `test_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '本表的主键',
  9. `courseware_id` bigint(20) DEFAULT NULL COMMENT '课件id',
  10. `courseware_name` varchar(255) DEFAULT NULL COMMENT '课件name',
  11. `courseware_type` bigint(20) DEFAULT NULL COMMENT '课件类型',
  12. PRIMARY KEY (`test_id`)
  13. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='测试子表';
  14. insert into edu_test (courseware_ids,courseware_types)
  15. values (1,"1,2"),(2,"2,3,5"),(3,"3,4,5"),(4,"4,6"),(5,"5,8"),(6,"6"),(7,"7"),(8,"8");
  16. insert into edu_test_son (courseware_id,courseware_name,courseware_type)
  17. values (1,"课件1",1),(1,"课件2",2),(3,"课件3",3),(5,"课件4",4),(5,"课件5",5),(5,"课件6",6),(7,"课件7",7),(8,"课件8",8);
  18. select * from edu_test;
  19. select * from edu_test_son;

-- 主表单个字段单个id,对应子表多个id

  1. SELECT
  2. a.*,(
  3. SELECT
  4. GROUP_CONCAT( CONCAT_WS( ',', b.courseware_name ) SEPARATOR ',' ) AS courseware_name
  5. FROM
  6. edu_test_son b
  7. WHERE
  8. b.courseware_id IN ( a.courseware_ids )) AS coursewareName
  9. FROM
  10. edu_test a;

fa7f12d0dd1441efb9f6562c9a07e288.png

多字段如何处理

GROUP_CONCAT(CONCAT_WS(‘,’,type,typename) SEPARATOR ‘,’)

IN在子查询中不起作用group_concat,解决方法见 ↓

IN在子查询中不起作用group_concat_行者彡的博客-CSDN博客

发表评论

表情:
评论列表 (有 0 条评论,161人围观)

还没有评论,来说两句吧...

相关阅读