mysql行转列聚合一对多的结果集|GROUP_CONCAT函数的使用|TRIM()函数的使用

1.行转列的结果集

selectdistinct tari.id,tari.link as link3,(casewhen tac.status = 4 then ba.create_timeelse nullend ) as secondEditTime,(casewhen tac.status = 1 then ba.linkelse nullend) as link1,(casewhen tac.status = 2 then ba.linkelse nullend) as link2,(casewhen tac.status = 4 then ba.linkelse nullend) as link4fromtable1 tariinner join table2 tac ontari.id = tac.business_idleft join table3 ba onba.id = tac.attach_id

  表名为敏感信息,我改成了table1 、table2的形式。无需知道表的具体结构,只需要知道table1:table2:table3的关系为1:n:n就行了,即一对多关系。
  上面的sql结果为请添加图片描述
  id是table1的唯一主键,因为表是一对多的关系,所以行转列之后出现这种情况。很显然这不是我们想要的结果集,需要把重复的id内容聚合起来。


2.GROUP_CONCAT函数的使用

selectt.id,t.link3 as link3,TRIM(both ',' from GROUP_CONCAT(IFNULL(secondEditTime, '') separator ',')) as secondEditTime,TRIM(both ',' from GROUP_CONCAT(IFNULL(link1, '') separator ',')) as l1,TRIM(both ',' from GROUP_CONCAT(IFNULL(link2, '') separator ',')) as l2,TRIM(both ',' from GROUP_CONCAT(IFNULL(link4, '') separator ',')) as l4from(selectdistinct tari.id,tari.link as link3,(casewhen tac.status = 4 then ba.create_timeelse nullend ) as secondEditTime,(casewhen tac.status = 1 then ba.linkelse nullend) as link1,(casewhen tac.status = 2 then ba.linkelse nullend) as link2,(casewhen tac.status = 4 then ba.linkelse nullend) as link4fromtbo_audit_report_info tariinner join tbo_attach_correlation tac ontari.id = tac.business_idleft join blade_attach ba onba.id = tac.attach_id) tgroup byt.id

上面的sql结果为
请添加图片描述
  GROUP_CONCAT函数是一个聚合函数,用于将多个行中的值连接成一个单独的字符串。具体来说,GROUP_CONCAT函数会将同一组内的多个值连接起来,形成一个由逗号分隔的字符串。多用于一对多和多对多的连表查询。
  举个更简单清晰的例子
  现在有以下表和数据

CREATE TABLE family_activities (family_member VARCHAR(100),activity VARCHAR(100)
);
INSERT INTO family_activities (family_member, activity)
VALUES ('张三', '篮球'),('张三', '游泳'),('李四', '烹饪'),('李四', '音乐'),('王五', '舞蹈');

执行

SELECT family_member, GROUP_CONCAT(activity SEPARATOR ', ') AS activity_list
FROM family_activities
GROUP BY family_member;

之后的结果是
在这里插入图片描述

3.TRIM()函数的使用

但是实际操作中,行转列的结果集里面会有很多的null和空串
你会得到类似 ,a,b,c或者a,b,c,的情况,所以需要TRIM函数来把逗号掐头去尾。

TRIM(str):去除字符串str两端的空格
TRIM(LEADING str FROM str):去除字符串str开头的str字符
TRIM(TRAILING str FROM str):去除字符串str结尾的str字符
TRIM(BOTH str FROM str):去除字符串str两端的str字符

比如TRIM(BOTH 'hw' FROM 'hello world') 会返回’ell ol’,去除了字符串两端的’h’和’w’字符

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/701128.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

施耐德UPS上电不输出问题

UPS上电之后output一直是off状态 型号SURT8000XLI-CH/ SURT8000UXI-CHSURT10000XLI-CH/ SURT10000UXI-CH 需要检查电池包是否插好,一定要把旁边的两个螺丝拧下来,再插上去,最后再装好螺丝 如果已经开机设置了UPS需要重置恢复出厂设置&…

web入门练手案例(二)

下面是一下web入门案例和实现的代码,带有部分注释,倘若代码中有任何问题或疑问,欢迎留言交流~ 数字变色Logo 案例描述 “Logo”是“商标”的英文说法,是企业最基本的视觉识别形象,通过商标的推广可以让消费者了解企…

2025考研专业课、英语、数学、政治视频大全,整理全了!

考研季又到了,备考的小伙伴们,你们准备好了吗? 时间管理 考研是一场与时间的赛跑,合理安排时间,让复习更高效! - 制定详细的学习计划,每天、每周、每月都有明确目标 - ‍♂️ 保持一定的学习…

qt: undefined reference to `vtable for aaa‘

版本qt4.8.6&#xff0c;编译报错“main.cpp:(.text0x3b): undefined reference to vtable for aaa” 就一个main.cpp #include <QApplication> #include <QTimer> #include <QCursor> #include <QMouseEvent> #include <QDesktopWidget> #inc…

制造业装备虚拟3D云展馆开发提升企业营销效果

随着元宇宙时代的到来&#xff0c;商城的运营模式也在发生深刻变革。在这一大背景下&#xff0c;元宇宙商城更加注重场景营造和商品的线上互动体验。3D技术的迅猛发展&#xff0c;为电商行业带来了全新的展示、体验与服务模式&#xff0c;电商3D化已成为不可阻挡的潮流。 华锐3…

互联网搞钱大变天,这有几条活路

互联网搞钱大变天&#xff0c;这有几条活路 靠互联网营生的各位同胞&#xff0c;你们有没有想过这样一个问题&#xff1a;假如有一天你的自媒体账号全被封了&#xff0c;你手上的操作项目全都黄了&#xff0c;你会怎么办&#xff1f; 就封号这事在这几年相信大家都不会陌生&a…

word2019 64位 NoteExpress突然无法使用解决方法

之前用的好好的&#xff0c;去除格式化运行过一次。 打开别的文档&#xff0c;突然发现红框中的图标全变灰了 根据教程添加 加载项&#xff0c;然后word以管理员身份重启&#xff0c;NE也以管理员身份运行&#xff0c;又可以了 然后突然又不行了&#xff0c;重启电脑后NE变成…

上位机图像处理和嵌入式模块部署(树莓派4b的提高版)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 目前人工智能非常火&#xff0c;但是人工智能需要极高的算力和海量的数据&#xff0c;因此相关的关联公司非常吃香&#xff0c;nvidia就是提供算力…

数据结构与算法学习笔记十---链队列的表示和实现(C语言)

目录 前言 1.什么是链队 2.链队的表示和实现 1.定义 2.初始化 3.销毁 4.清空 5.空队列 6.队列长度 7.获取队头 8.入队 9.出队 10.遍历队列 11.完整代码 前言 本篇博客介绍链栈队列的表示和实现。 1.什么是链队 链队是采用链式存储结构实现的队列。通常链队使用单…

nginx 发布静态资源

一. nginx 发布静态资源 在nginx中nginx.conf配置文件中添加内容如下&#xff1a; server {listen 90;server_name localhost;# 配置静态资源文件&#xff0c;就可以访问了location / {root /home/fooie-shop;index index.html;}# 配置音频和图片资源location /imoo…

用大于meilisearch-java-0.7.0.jar的报错的解决

Elasticsearch 做为老牌搜索引擎&#xff0c;功能基本满足&#xff0c;但复杂&#xff0c;重量级&#xff0c;适合大数据量。 MeiliSearch 设计目标针对数据在 500GB 左右的搜索需求&#xff0c;极快&#xff0c;单文件&#xff0c;超轻量。 所以&#xff0c;对于中小型项目来说…