#MySQL查询笔记记录
今天遇到了个问题,从MySQL数据库查询数据,某个字段有重复值,要将它的重复值对应的列表合并到一起,其它为重复的字段,分别显示出来;
简而言之 就是 将查询结果分别 输出 为 单独显示 和 将多个数组合并显示,并在一条查询语句当中。
我最开始很基本的查询是这样的:
SELECT * FROM fba_head_tail_difference WHERE taskId = 990 AND isValid = 1;
可以发现,level为0的数据分为多条显示,但我在另外一个查询里面需要它对应的volumeIds合并到一起显示,遇山修路,遇水架桥
我思考的是如何将MySQL查询结果分别输出单个和多个数组,并将多个数组合并到一起显示
一翻查阅MySQL文档,谷歌后,问题解决,get了几个MySQL的新姿势,MySQL作为关系型数据库存在了这么多年真的有其存在的意义,真的很强大!!!
省了很多事,查询速度也不慢,不然我还要代码里将它遍历再组到一起,很费时费力
解决方案
SELECT DISTINCT LEVEL,GROUP_CONCAT(volumeIds SEPARATOR ','),COUNT(LEVEL) AS COUNT FROM fba_head_tail_difference
WHERE taskId = 990 AND isValid = 1 AND LEVEL >= 0 GROUP BY LEVEL HAVING COUNT>0
GROUP_CONCAT(volumeIds SEPARATOR ',')
这个语法 含义是将多个数组用,连接组合成一个数组
GROUP BY LEVEL HAVING COUNT>0
将level 排序,并筛选出level等级出现次数大于0的,即得到查询数据。