MySQL学习笔记:一道group by+group_concat解决的小问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL学习笔记:一道group by+group_concat解决的小问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1789字,纯文字阅读大概需要3分钟。
内容图文
![MySQL学习笔记:一道group by+group_concat解决的小问题](/upload/InfoBanner/zyjiaocheng/915/6f8b18b9d2fb427195b73654a54ab363.jpg)
闲来无事,逛逛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 bizId ELSE NULL END AS uid, CASE WHEN type2 = '2' THEN bizId ELSE NULL END AS typeid FROM 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
内容总结
以上是互联网集市为您收集整理的MySQL学习笔记:一道group by+group_concat解决的小问题全部内容,希望文章能够帮你解决MySQL学习笔记:一道group by+group_concat解决的小问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。