MySQL学习笔记:一道group by+group_concat解决的小问题
闲来无事,逛逛V2EX发现一道MySQL数据库题目,原题如下:
遂打开很长一段时间都没用过SQLyog,噗呲噗呲的干起活来……
建测试表:
CREATE TABLE test_001 (id INT,type2 VARCHAR(10),bizId VARCHAR(10),batchId INT )INSERT INTO test_001(id,type2,bizId,batchId) VALUES(1,1,'uid1',1); INSERT INTO test_001(id,type2,bizId,batchId) VALUES(2,1,'uid2',1); INSERT INTO test_001(id,type2,bizId,batchId) VALUES(3,2,'fid1',1); INSERT INTO test_001(id,type2,bizId,batchId) VALUES(4,2,'fid2',1); INSERT INTO test_001(id,type2,bizId,batchId) VALUES(5,1,'uid3',2); INSERT INTO test_001(id,type2,bizId,batchId) VALUES(6,2,'fid3',3);SELECT * FROM test_001;
第一次解决,KO!
SELECT batchId,GROUP_CONCAT(uid) AS uid,GROUP_CONCAT(typeid) AS typeid FROM(SELECT batchId,CASE WHEN type2 = '1' THEN bizIdELSE NULL END AS uid,CASE WHEN type2 = '2' THEN bizIdELSE NULL END AS typeidFROM test_001) g GROUP BY batchId;
看起来没什么毛病,哈哈哈!继续看看其他高手有没有什么值得学习的解决方案。
SELECT * FROM test_001; SELECT batchId,GROUP_CONCAT(CASE WHEN type2 = 1 THEN bizId ELSE NULL END) AS "uid",GROUP_CONCAT(CASE WHEN type2 = 2 THEN bizId ELSE NULL END) AS "typeid" FROM test_001 GROUP BY batchId;
不采用子查询显得更加的优雅,get!结果符合要求!
附原文链接:https://www.v2ex.com/t/535679
顺手温习一下concat、concat_ws、group_concat函数的使用方法。
- concat(str1,str2,str3,...) 字符串拼接
如果有任何一个参数为null,则返回值为null。
- concat_ws(separator,str1,str2,...)
指定分隔符拼接,分隔符不能为null。
- group_concat( ) 分组拼接
group_concat([distinct] col [order by xxx desc] [separator '分隔符'])
SELECT * FROM test_001-- 例子1 SELECT batchId,GROUP_CONCAT(bizId ORDER BY bizId DESC SEPARATOR '_') AS xxx FROM test_001 GROUP BY batchId-- 例子2 SELECT batchId,GROUP_CONCAT(CONCAT_WS('-',type2,bizId) ORDER BY bizId) FROM test_001 GROUP BY batchId
END 2019-03-26 15:27:36
转载于:https://www.cnblogs.com/hider/p/10600182.html
MySQL学习笔记:一道group by+group_concat解决的小问题相关推荐
- MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法
MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法 参考文章: (1)MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法 (2)https://www.cnblogs.com/tiny ...
- MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- MySQL学习笔记-基础篇1
MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...
- MySQL学习笔记(1)——高可用组复制
MySQL学习笔记(1)--高可用组复制 积土成山,风雨兴焉.积水成渊,蛟龙生焉. 一.概念 组复制(MySQL Group Replication,MGR)是MySQL官方在MySQL 5.7.17 ...
- JavaEE 企业级分布式高级架构师(六)MySQL学习笔记(6)
MySQL学习笔记 性能优化篇 性能优化的思路 慢查询日志 慢查询日志介绍 开启慢查询功能 演示一 演示二 分析慢查询日志 MySQL自带的mysqldumpslow 使用percona-toolki ...
- MySQL 学习笔记②
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/BV1Kr4y1i7ru 资料链接 ...
- 献给入门小白的MySQL学习笔记+案例
MySQL学习笔记 目录 MySQL学习笔记 1.SQL概述 1.1:数据库的好处 1.2:数据库管理系统 1.3:SQL语言概述 1.4:SQL语言的分类 2.安装与使用 2.1:MySql数据库产 ...
- Mysql 学习笔记(快速复习)
Mysql 学习笔记(快速复习) 一.MySQL 基础 1.数据库连接工具 1.1.Navicat 使用教程 2.DDL 操作数据库 2.1.创建新数据库 2.2.删除数据库 2.3.使用数据库 3. ...
- 数据库MySQL学习笔记高级篇(周阳)
数据库MySQL学习笔记高级篇 1. mysql的架构介绍 mysql简介 高级Mysql mysqlLinux版的安装 mysql配置文件 mysql逻辑架构介绍 mysql存储引擎 2. 索引优化 ...
- mysql 学习笔记--存储引擎、索引、sq优化
全面的 mysql学习笔记–通用语法.函数.数据类型.约束.多表查询.事务 全面的 mysql学习笔记–存储引擎.索引.sql优化 全面的mysql学习笔记–视图/存储过程/触发器.锁.InnoDB引 ...
最新文章
- 关于魔法方法的一点总结
- JAVA的内存模型及结构
- Ubuntu上的samba共享文件安装配置
- GridView应用整理
- C#.Net 中的 new 的几个用法
- Vue入门指南-05 Vue实例的生命周期(快速上手vue)
- element-ui可编辑行增加行或删除行
- c bool 类型检查_第3篇:C/C++ 检查数字类型的最高有效位(MSB)
- SQL经典面试50题 | 附答案
- 计算机局域网络硬件组成,计算机基础知识:局域网网络硬件的组成
- wed是什么意思在计算机应用基础中,卡西欧wed什么意思
- 【100+ python基础入门-37】Python可变集合和不可变集合的构造方法和注意事项
- KNY团队与“易校”小程序介绍
- vue渲染大量数据优化_vue大数据表格卡顿问题的完美解决方案
- JNI/NDK开发指南(十一)——JNI异常处理
- 大前端CPU优化技术--NEON intrinsics进阶
- 深海的诱惑:如何成为一名潜水员
- 怎么直接压缩图片?好用的图片压缩工具推荐
- ubuntu安装samba共享文件夹并设置匿名用户登陆
- 机器视觉 OpenCV—python 多目标跟踪与视频分析
热门文章
- datanode启动后闪退_网友吐槽12306 App:不同意获取个人信息就会“闪退”
- html可编辑下拉选项卡,bootstrap可编辑下拉框jquery.editable-select
- html 导航菜单切换效果,纯CSS实现Tab导航栏切换
- linux 按序号创建文件夹,在Linux终端中创建M3U播放列表的方法
- 华为路由器配置文件备份与恢复
- django 使用新的虚拟环境
- 暗渡陈仓:用低消耗设备进行破解和渗透测试2.3 本章小结
- 《精通LabVIEW虚拟仪器程序设计与案例实现》一2.6 VI的创建与编辑
- TCP/IP的全部IP协议号
- ucosiii 钩子函数