本文实例分析了MySQL统计函数GROUP_CONCAT使用中的陷阱。分享给大家供大家参考,具体如下:
最近在用MySQL做一些数据的预处理,经常会用到group_concat函数,比如类似下面一条语句
代码如下:mysql>select aid,group_concat(bid) from tbl group by aid limit 1;
sql语句比较简单,按照aid分组,并且把相应的bid用逗号串起来。这样的句子大家可能都用过,也可能不会出问题,但是如果bid非常多的话,你就要小
group_concat()函数的参数是可以直接使用order by排序的。666。。
下面通过例子来说明,首先看下面的t1表。
比如,我们要查看每个人的多个分数,将该人对应的多个分数显示在一起,分数要从高到底排序。
可以这样写:
SELECT username,GROUP_CONCAT(score ORDER BY score DESC) AS myScore FROM t1 GROUP BY username;
效果如下:
以上这篇浅谈MySQL中group_concat()函数的排序方
GROUP_CONCAT
今天工作需要,要用到group by等等,查看手册,没想到发现了GROUP_CONCAT这个好东西,一下在省掉了我很多工作,这个函数在 MySQL 4.1 中被加入。函数返回一个字符串结果,该结果由分组中的值连接组合而成。贴上简单的例子:mysql> SELECT * FROM `ta`;+—-+——+| id | name |+—-+——+| 1 | a || 1 | b || 1 | c || 1 | d || 2 | a || 2 | b || 2 | c
假设两个表a,b,b中通过字段id与a表关联,a表与b表为一对多的关系。假设b表中存在一字段name,现需要查询a表中的记录,同时获取存储在b表中的name信息,按照常规查询,b表中有多少记录,则会显示多少行,如果需要只显示a表记录行数,则需要把查询name字段得到的多行记录进行合并,可以通过程序实现,但也可直接在sql层完成。
方法:
利用group_concat()方法,参数为需要合并的字段,合并的字段分隔符默认为逗号,可通过参数separator指定,该方法往往配合group by 一起使