本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) 。

MySQL中group_concat函数
完整的语法如下:
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
基本查询
mysql> select from aa;
+------+------+
| id| name |
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200  |
|3 | 500  |
+------+------+
6 rows in set (0.00 sec)
以id分组,把name字段的值打印在一行,逗号分隔(默认)
mysql> select id,group_concat(name) from aa group by id;
+------+--------------------+
| id| group_concat(name) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
+------+--------------------+
3 rows in set (0.00 sec)
以id分组,把name字段的值打印在一行,分号分隔
mysql> select id,group_concat(name separator ';'from aa group by id;
+------+----------------------------------+
| id| group_concat(name separator ';') |
+------+----------------------------------+
|1 | 10;20;20 |
|2 | 20|
|3 | 200;500  |
+------+----------------------------------+
3 rows in set (0.00 sec)
以id分组,把去冗余的name字段的值打印在一行,
逗号分隔
mysql> select id,group_concat(distinct name) from aa group by id;
+------+-----------------------------+
| id| group_concat(distinct name) |
+------+-----------------------------+
|1 | 10,20|
|2 | 20  |
|3 | 200,500 |
+------+-----------------------------+
3 rows in set (0.00 sec)
以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序
mysql> select id,group_concat(name order by name desc) from aa group by id;
+------+---------------------------------------+
| id| group_concat(name order by name desc) |
+------+---------------------------------------+
|1 | 20,20,10  |
|2 | 20|
|3 | 500,200|
+------+---------------------------------------+
3 rows in set (0.00 sec)
 
 

有长度限制的,长度设置 请看 group_concat的长度设置链接

简单用法:

SET GLOBAL group_concat_max_len=102400;后直接跟包含group_concat 的sql语句即可。(全局 查询 的设置,只要设置,这个mysql服务器 下 这儿长度就永久设置成这个值。 )
SET SESSION group_concat_max_len=102400;后直接跟包含group_concat 的sql语句即可。(一次session查询 的设置,只会在同一个session 下的查询才会生效 )

注:以上举例都是将分完组后每组里数据 合并到一行,即结果记录还是根据有几个组 ,结果记录 就有几条记录。 那怎么样 才能 把 分完组后的几条记录 也最终合并到一行呢?
解决思路,可以将分完组后的记录 再次作为临时表,然后附加一个相同值的字段,然后再重新分组合并即可。如下:
将历练中低级、中级、高级 三个类型下的最高npc 的id 合并 到一行,这怎么做呢,根据上表说明,解决脚本如下:
@SELECT MAX(n_id) AS nid,n_type FROM dict_dream_template GROUP BY  n_type; 结果
       nid  n_type  -------  -------- 1500008         1 2500008         2 3010049         3
可以看出结果记录中 类型有3个组,而且每组 最大的npc 的id 也查出来了。那现在怎么样才能把 这三个组的最大npc 的id 合并到一组,很简单,把这个结果记录当成一个表重新附加个相同字段:
@SELECT MAX(n_id) AS nid,n_type,1  AS addsame  FROM dict_dream_template GROUP BY  n_type;
    nid  n_type  addsame  -------  ------  --------- 1500008       1          1 2500008       2          1 3010049       3          1
可以看出上边给查询结果已经附加了一个值皆为1的 addsame 零时别名字段,那下边把这个结果当成一个表,给表起个别名 就可以重新 按照 addsame分组 查询 然后合并了
@SELECT GROUP_CONCAT(nid),GROUP_CONCAT(n_type) FROM (SELECT MAX(n_id) AS nid,n_type,1 AS addsame FROM dict_dream_template GROUP BY  n_type) t GROUP BY addsame;
group_concat(nid)        GROUP_CONCAT(n_type)  addsame  -----------------------  --------------------  --------- 1500008,2500008,3010049  1,2,3                         1
 
可以看出 上边已经 将上一步查询结果 合并好了,这个结果就是我最终要的数据,即 将分过组后的每组记录给合并 到一行,即最终结果记录里就一行数据

MySQL中group_concat函数 --- 很有用的一个用来查询出所有group by 分组后所有 同组内的 内容的更多相关文章

  1. MySQL中group_concat函数深入理解

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . 一.MySQL中group_concat函数 完整的语法如下: gr ...

  2. MySQL中group_concat函数-和group by配合使用

    MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...

  3. MySQL中group_concat函数

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) .MySQL中group_concat函数完整的语法如下:group_c ...

  4. mysql中group_concat函数用法

    该函数返回带有来自一个组的连接的非NULL值的字符串结果.该函数是一个增强的Sybase SQL Anywhere支持的基本LIST()函数. 语法结构: GROUP_CONCAT([DISTINCT ...

  5. 关于mysql中GROUP_CONCAT函数的使用

    偶然看到公司存储过程中有个字符串拼接的函数,改bug过程中使用到了,还挺有用的,于是记录下来方便记忆,帮助有需要的人. 这是我需要整理的串,他是调用了一个存储过程,传入组织机构的id和迭代层数,返回来 ...

  6. 关于Mysql中GROUP_CONCAT函数返回值长度的坑

    1.GROUP_CONCAT函数: 功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果. 语法:group_concat( [distinct] 要连接的字段 [order b ...

  7. MYSQL中group_concat( )函数中参数的排序方法

    使用mysql中的group_concat( )函数连接指定字段时,可以先对该字段进行排序. PS:是因为二刷mysql的51道题的第12题遇到的:查询和" 01 "号同学学习的课 ...

  8. MySQL中group_concat()函数的排序方法

    group_concat()函数的参数是可以直接使用order by排序的.666..下面通过例子来说明,首先看下面的t1表. 比如,我们要查看每个人的多个分数,将该人对应的多个分数显示在一起,分数要 ...

  9. MySQL中group_concat函数,用符号连接查询分组里字段值

    http://blog.csdn.net/my_yang/article/details/7186844

随机推荐

  1. Mass Spectrometry-Compatible Subcellular Fractionation for Proteomics 质谱兼容的蛋白质组学的亚细胞分离(解读人:王茹凯)

    文献名:Mass Spectrometry-Compatible Subcellular Fractionation for Proteomics(质谱兼容的蛋白质组学的亚细胞分离) 期刊名:Jpor ...

  2. 趣学Spring:一文搞懂Aware、异步编程、计划任务

    你好呀,我是沉默王二,一个和黄家驹一样身高,刘德华一样颜值的程序员(不信围观朋友圈呗).从 2 位偶像的年纪上,你就可以断定我的码龄至少在 10 年以上,但实话实说,我一直坚信自己只有 18 岁,因为 ...

  3. 题解 P1985 【[USACO07OPEN]翻转棋】

    讲讲我的做法 刚开始做这道题的时候,看到\(n<=15\),我这个\(6\)年级的蒟蒻的第1反应是状压\(dp\).貌似不好做.然而,等到我在省中集训的时候,老师的一席话,让我豁然开朗.今天我准 ...

  4. jquery实现元素的显示和隐藏

    这个是指定表格列的隐藏的demo,其余的都大同小异了 $("#account-table tr").find($("#tcNum")).show();//sho ...

  5. Android适配器

    Android适配器 安卓的适配器在我看来是一个非常重要的知识点,面对形式相同但数据源较多的情况时,适配器是一个比较好的解决方法.数据适配器是建立了数据源与控件之间的适配关系,将数据源转换为控件能够显 ...

  6. effective-java学习笔记---优先使用泛型方法30

    泛型类型比需要在客户端代码中强制转换的类型更安全,更易于使用. 当你设计新的类型时,确保它们可以在没有这种强制转换的情况下使用. 这通常意味着使类型泛型化. 如果你有任何现有的类型,应该是泛型的但实际 ...

  7. nltk 获取 gutenberg 语料,gensim 生成词库和 onehot 编码

    nltk 获取 gutenberg 语料 gensim 生成词库和 onehot 编码 正在尝试基于 Tensorflow LSTM 模型开发另外一个项目,需要自然语言处理的工具和语料. import ...

  8. PyTorch专栏(六): 混合前端的seq2seq模型部署

    欢迎关注磐创博客资源汇总站: http://docs.panchuang.net/ 欢迎关注PyTorch官方中文教程站: http://pytorch.panchuang.net/ 专栏目录: 第一 ...

  9. CNN更新换代!性能提升算力减半,还即插即用

    传统的卷积运算,要成为过去时了. Facebook和新加坡国立大学联手提出了新一代替代品:OctConv(Octave Convolution),效果惊艳,用起来还非常方便. OctConv就如同卷积 ...

  10. Selenium系列(十五) - Web UI 自动化基础实战(2)

    如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...