MySQL中函数CONCAT及GROUP_CONCAT

转载 2015年07月06日 18:44:10
group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。
比较抽象,难以理解。


通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函


数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组。


group_concat函数应该是在内部执行了group by语句,这是我的猜测。


1.测试语句:SELECT group_concat(town) FROM `players` group by town


结果去查找town中去查找哪些值是一样的,如果相等,就全部列出来,以逗号分割进行列出,如下:


group_concat(town)
 
北京,北京
长沙




2.测试:SELECT group_concat( town )
FROM players
结果:
group_concat(town)
长沙,北京,北京,


上面是否可以证明,group_concat只有与group by语句同时使用才能产生效果? 下面进行了实际测验




3.测试常量对group_concat()的配置影响:
SET @@GROUP_CONCAT_MAX_LEN=4
手册中提到设置的语法是这样的:
SET [SESSION | GLOBAL] group_concat_max_len = val;


两种有什么区别?


SET @@global.GROUP_CONCAT_MAX_LEN=4;
global可以省略,那么就变成了:SET @@GROUP_CONCAT_MAX_LEN=4;




4.使用语句 SELECT group_concat(town) FROM `players`。结果得到:
group_concat(town)
长沙,北京,长沙,北京
结论:group_concat()函数需要与group by语句在一起使用,才能得到需要的效果。
原因可以这样理解:group_concat()得到是属于x组的所有成员(函数里面列参数指定需要显示哪些字段)。x组从哪里来?如


果没有group by进行指定,那么根本不知道group_concat()根据哪个分组进行显示出成员。 所以,像上面没有group by子句


的时候,就显示了长沙和北京。




实际中什么时候需要用到这个函数?
假如需要查询的结果是这样:左边显示组名,右边想显示该组别下的所有成员信息。用这个函数,就可以省去很多事情了。


另外,假如我这样使用:SELECT group_concat( name, sex ) FROM `players` town。意义不大。group_concat()指定一个


列是最好的情况。如果指定了多个列。那么显示结果类似这样:


group_concat(name,sex)

利用MySQL 的GROUP_CONCAT函数实现聚合乘法

利用MySQL GROUP_CONCAT函数实现聚合乘法。
  • yueliangdao0608
  • yueliangdao0608
  • 2014年10月21日 14:10
  • 7610

对字符串的“sum”——Oracle里实现类似MySQL group_concat函数

oracle自定义聚集函数接口简介    a. static function ODCIAggregateInitialize(sctx IN OUTstring_agg_type )    ...
  • rooklyn21
  • rooklyn21
  • 2014年08月27日 14:02
  • 662

MySQL连表操作和GROUP_CONCAT函数的使用

在开发网站的时候,数据库操作是必须,复杂的网站有时要涉及到几张表的同时操作。以下简单讲解一下多表查询和GROUP_CONCAT函数的使用。例如有三张表 jd_role:角色表,jd_role_priv...
  • bao2436
  • bao2436
  • 2016年02月23日 20:41
  • 849

mysql group_concat合并行用法和问题

还有分隔符还可以自定义,默认是以“,”作为分隔符,若要改为“|||”,则使用SEPARATOR来指定, 例如: mysql> SELECT student_id, GROUP_CONCAT(c...
  • hi_kevin
  • hi_kevin
  • 2013年01月06日 16:47
  • 25701

mysql存储过程 函数积累GROUP_CONCAT(expr)

GROUP_CONCAT(expr) 该函数返回带有来自一个组的连接的非NULL值的字符串结果。其完整的语法如下所示:  GROUP_CONCAT([DISTINCT] expr [,expr ....
  • su12345su
  • su12345su
  • 2017年02月14日 18:07
  • 605

Mysql group_concat的反向应用实现(Mysql列转行)

本文参考:http://blog.chinaunix.net/uid-411974-id-3990697.html,示例具业务场景略作改动。 -- 气温采集表,每天每个整点的气温度数 CRE...
  • daxiang12092205
  • daxiang12092205
  • 2016年05月11日 14:58
  • 1468

mysql函数GROUP_CONCAT()的使用(多条数据合并)

GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起用
  • tolcf
  • tolcf
  • 2014年10月21日 10:15
  • 7217

浅析MySQL中concat以及group_concat的使用

说明: 本文中使用的例子均在下面的数据库表tt2中执行: 一、concat()函数 1、功能:将多个字符串连接成一个字符串。 2、语法:concat(str1, str2,...) 返回结果为连接...
  • Mary19920410
  • Mary19920410
  • 2017年08月01日 17:13
  • 660

mysql 查询的字段值太长显示不全 group_concat

在使用sql语句查询时,我们使用group_concat的形式对字段进行操作后使得查询出来的字段太长,会造成不能完全显示的问题,如下: 当前这个字段非常的长,在数据库看的时候也只是显示一部分内容,...
  • qq_38317491
  • qq_38317491
  • 2017年12月04日 17:13
  • 219

Mysql group_concat的反向应用实现(Mysql列转行)

用过Mysql的都知道她有一个很好的实现行转列功能的函数group_concat函数,非常方便 点击(此处)折叠或打开 SELECT     * FRO...
  • alibert
  • alibert
  • 2016年03月17日 17:20
  • 1243
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL中函数CONCAT及GROUP_CONCAT
举报原因:
原因补充:

(最多只允许输入30个字)