Mysql列转行, group_concat的使用
开始业务的查询的时候碰到一个sql的查询语句问题,主要是 group_concat 之前没用过,现在记录一下怎么用
group_concat
用法, 可以将相同的行组合起来
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
例子:
表一数据为:

表二数据为:

表三数据为:

表三存在的意义就是将第一张表和第二张表链接起来。
第一次写查询:

将不同类型的素材区分开,然后将相同类型的拼在一起
SELECT
GROUP_CONCAT(case when t2.ad_ml_type='1' then t2.save_name end) as name1,
GROUP_CONCAT(case when t2.ad_ml_type='2' then t2.save_name end) as name2,
GROUP_CONCAT(case when t2.ad_ml_type='3' then t2.save_name end) as name3,
GROUP_CONCAT(case when t2.ad_ml_type='4' then t2.save_name end) as name4
t1.*,
FROM
ad_material_library t1,
ad_ml_label t2,
ad_ml_label_map t3
WHERE
t1.id = t3.ml_id
AND t3.label_id = t2.id
GROUP BY
t1.id
更改二:
SELECT
GROUP_CONCAT(Distinct(case when t2.ad_ml_type='1' then t2.save_name end) SEPARATOR '__') as "material_type",
GROUP_CONCAT(Distinct(case when t2.ad_ml_type='2' then t2.save_name end) SEPARATOR '__') as "material_content",
GROUP_CONCAT(Distinct(case when t2.ad_ml_type='3' then t2.save_name end) SEPARATOR '__') as "material_label",
GROUP_CONCAT(Distinct(case when t2.ad_ml_type='4' then t2.save_name end) SEPARATOR '__') as "material_belong",
t1.*
FROM
ad_material_library t1,
ad_ml_label t2,
ad_ml_label_map t3
WHERE
t1.id = t3.ml_id
AND t3.label_id = t2.id
GROUP BY
t1.id
得到结果

第二个例子
参考: https://blog.csdn.net/beidaol/article/details/93325855
Mysql列转行, group_concat的使用的更多相关文章
- Mysql 列转行group_concat函数,与行转列
1.正常情况. SELECT JoinEventIds from nt_mainnum 2.使用group_concat函数 select group_concat(JoinEventIds) fro ...
- Mysql 列转行统计查询 、行转列统计查询
-- ---------------------------- -- Table structure for `TabName` -- ---------------------------- D ...
- mysql 列转行,合并字段
数据表: 列转行:利用max(case when then) max---聚合函数 取最大值 (case course when '语文' then score else 0 end) ---判断 ...
- mysql 列转行,合并字段的方法
数据表(表名:xsk) +----+------+-----------+-------+ | id | name| course | score | +----+------+----------- ...
- mysql列转行 行转列
列转行 SELECT flag ,substring_index(substring_index(t.context,), ) as result FROM ( select 'aa' as flag ...
- mysql 列转行 动态写法
-- 列转行动态sql -- 测试表DROP TABLE IF EXISTS `tb_score`; CREATE TABLE `tb_score` ( `id` int(11) NOT NULL A ...
- mysql 列转行
第一种方法:使用序列化表的方法实现列转行 第一种方法:使用UNION的方法实现列转行 第二种方法:使用序列化表的方法实现列转行
- ( 转 ) Mysql group_concat 的反向应用实现(Mysql列转行)
用过Mysql的都知道她有一个很好的实现行转列功能的函数group_concat函数,非常方便 点击(此处)折叠或打开 SELECT * FROM group_test; SELECT id, GRO ...
- mysql 列转行处理
CREATE TABLE `table1` ( `id` ) DEFAULT NULL, `name` ) CHARACTER SET utf8 DEFAULT NULL ) ENGINE=MyISA ...
- mysql列转行
要得到 SELECT name, SUM(CASE course WHEN '语文' THEN score END ) AS '语文', SUM(CASE course WHEN '数学' THEN ...
随机推荐
- windows代码获取系统硬件信息的两种方式
欢迎访问我的个人博客:xie-kang.com 原文地址 目前windows有两种方式获取系统硬件信息: 1)通过GetSystemFirmwareTable API获取SMBIOS信息,一段含丰富信 ...
- 自定义DOM事件函数封装
非原生DOM触发,个性化定制的自定义事件. currentTarget(DOM对象):要触发事件的元素节点. type(字符串):触发的事件类型,例如"keydown". bubb ...
- Old ST-LINK firmware detected.do you want to upgrade it?升级固件
一段时间没有使用st-link烧写程序了.打开keil5准备把程序烧写到stm32板子上时,报错Old ST-LINK firmware detected.do you want to upgrade ...
- win10_pyhive链接hive失败,提示:Could not start SASL
win10_pyhive链接hive失败,提示:Could not start SASL https://blog.csdn.net/weixin_45684985/article/details/1 ...
- Blazor项目在VisualStudio调试时配置运行基础目录
最近在使用 Blazor 开发管理后台时遇到了如下的问题,我这里后台整体采用了 AntDesignBlazor 组件库,在上线之后发现ReuseTabs组件在使用过程中,如果默认 / 没有指定为项目的 ...
- DNS BIND之dnssec安全
公司一大早域名解析出问题了,网抓项目都无法抓取到进销存数据. 查询后发现是运维周末重启了dns服务. 网上找到的解决方法: 在BIND的配置文件(/etc/named.conf)中打开DNSSEC选项 ...
- 红黑树(map与unorder_map)B B+树
红黑树(map) 这个里面有插入的几种方式:红黑树性质的理解 先说性质,1 每个节点要么红要么黑,2 一个节点为红色,左右两个孩子都是黑, 3 根节点是黑, 4 每个叶子(nil)节点都是黑色, 5 ...
- asp.net 应用程序中同步方法调用异步方法无响应解决方法
微软发布 C# async/await 异步语法功能已经好久了,但是目前来看使用并不广泛.本人经过实践在开发过程中使用 async/await 一路到底确实很爽,而且也没有啥问题.但是在面对旧项目变更 ...
- day02-搭建微服务基础环境01
搭建微服务基础环境01 1.创建父工程,用于聚合其他微服务模块 1.1创建父项目 说明:我们先创建一个父项目,该父项目会去管理多个微服务模块(module),如下: (1)File-New-Proje ...
- 快速部署Ceph分布式高可用集群
快速部署Ceph分布式高可用集群 Ceph简介 Ceph是一个PB,EB级别的分布式存储系统,可以提供文件存储,对象存储.和块存储,它可靠性高,易扩展,管理简便,其中对象存储和块存储可以和其他云平台集 ...