一个聚合函数,在 group 语句中使用,可以将多行的字符串按分组整合成一个字符串,注意:使用 GROUP_CONCAT() 函数必须对源数据进行分组,否则所有数据会被合并成一行
例子:

SELECT id,group_concat(dept SEPARATOR ',') FROM table_a GROUP BY dept;
SELECT GROUP_CONCAT(CONCAT('\'',ENIN_NAME,'\'')) FROM  sys_c_en_entityinfo;
SELECT t.names AS '姓名',GROUP_CONCAT(t.course_name ORDER BY t.course_name SEPARATOR ',') AS '课程' FROM course t GROUP BY t.names

使用案例:
用户每月数据都是单行的,一年的数据为12条,需要将12条数据存为 [0,0,0,0,0...] 这样的结构。

SELECT CONCAT('[', GROUP_CONCAT(s.df2 SEPARATOR ','), ']') df2
          FROM (SELECT b.year_m, IF(b.year_m > DATE_FORMAT(NOW(),'%Y%m'),0,sum(IF(a.df2 IS NULL, 0, a.df2))over(ORDER BY b.year_m)) df2
                  FROM (SELECT date_format(s.slsj, '%Y%m') slsj, count(*) df2
                          FROM yhhx_dfgmg s
                         WHERE s.yhbh = a.yhbh
                           AND s.ywlb != '投诉'
                           AND substr(s.slsj, 1, 4) = date_format(now(), '%Y')
                         GROUP BY date_format(s.slsj, '%Y%m')) a
                 RIGHT JOIN demo_ny b
                    ON a.slsj = b.year_m) s

结果:

[1,2,3,4,5,6,7,8,9,0,11,12]

注意: GROUP_CONCAT 函数默认的最大可连接字符串的长度是 1024 ,如果连接的字符串长度超过 1024 的话会被截断,不过我们可以通过设置 group_concat_max_len 的值来修改 GROUP_CONCAT 的最大长度。

-- 查看长度
SELECT @@global.group_concat_max_len;
-- 设置长度
SET GLOBAL group_concat_max_len=999999;
SET SESSION group_concat_max_len=999999;


mysql 查询某条数据是否被引用 mysql怎么知道索引是否生效

前言:在网上关于MySql索引是否生效的文章有许多,但都不是很全面的整理,作为一个开发人员也一直在意这块内容,自己动手整理一下吧 。如有遗漏或错误请大家不吝赐教。 1. 准备一张表(注意:a,b,c三个字段创建的是联合索引,并没有单独创建普通索引,d字段创建的是普通索引)CREATE TABLE `test` ( `id` bigint(11) unsigned NOT NULL A

java 字符流的缓冲流 java 字符串流

一.字符流出现的原因 原因:由于字节流操作中文不是特别方便,所以,java就提供了字符流。 字符流: 字符流 = 字节流 + 编码表 二.String类中的编码和解码问题 编码: 就是把字符串转换成字节数组(把看得懂的变成看不懂的: String – byte[])把一个字符串转换成一个字节数组 public byte[] getBytes();使用平台的默认字符集将此 String编码为 by