Mysql GROUP_CONCAT(expr) 介绍

1、MYSQL版本

\Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 86693
Server version: 5.7.23 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> \

2、需求

把一行的数据用分隔符隔开,放在一个字段下面;

3、实现GROUP_CONCAT(expr) 

3.1 测试sql,用逗号分割

select GROUP_CONCAT(id separator  '\,') from crawler_device;

3.2 测试结果

mysql> select GROUP_CONCAT(id separator  '\,') from crawler_device;
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GROUP_CONCAT(id separator  '\,')                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 18795,18796,18797,22760,22292,23305,23306,23307,19680,21693,23294,23308,19396,15400,16187,23103,23104,23105,23106,23107,23108,23109,23110,23111,23112,23113,23114,23115,13486,18917,13487,15401,15402,21216,22423,21694,18798,18853,18799,16188,21695,21696,16189,16190,16191,16747,16748,16749,16192,16193,22424,13488,13489,20412,22967,22968,22969,22970,22971,13490,19397,13491,13928,16750,18800,21217,15469,13492,13493,22641,16751,15403,15404,22425,16752,18801,20413,13901,16753,22064,19398,19681,16194,13494,16754,16569,16570,16571,16572,16573,22340,21024,13011,21025,13012,21601,21602,21603,21604,22341,16339,16340,16574,18712,13013,16575,16872,16576,23276,15199,15200,23407,19113,22342,23277,18340,21605,21606,21607,21608,21609,21610,23278,13014,22861,23537,23538,23539,23540,23541,16577,16578,16579,22263,15201,15202,15203,13015,13016,15956,19315,19316,21026,13017,22343,13018,13019,13020,16580,13021,22748,15957,18341,18342,18343,18344,13022,22862,17156,15204,13023,18928,13024,13025,13026,13027,18713,13028,13902,16581,1302 |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

经过统计:发现每次获取的结果都是1024字节;查看官网:https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat,发现默认截取1024个字节的字符串;

查看环境变量:

mysql> show global variables where variable_name like '%group_concat_max_len%';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| group_concat_max_len | 1024  |
+----------------------+-------+
1 row in set (0.01 sec)

mysql> show global variables where variable_name like '%max_allowed_packet%';
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| max_allowed_packet       | 41943040   |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
2 rows in set (0.00 sec)

确实只截取1024个字节;

3.3 解决方式

SET [GLOBAL | SESSION] group_concat_max_len = val;

本数据库设置如下:
SET GLOBAL group_concat_max_len = 1048576; #设置1Mb  这个设置好像不好使;结果没变;可能是客户端通过session 访问mysql server,所以session的设置才有用吧;--搞完es回来再研究!
SET SESSION group_concat_max_len = 1048576; #设置1Mb 好用;

3.4 重复执行,查看获取的结果的长度;

扫描二维码关注公众号,回复: 10882661 查看本文章
...1,14322,19417,21268,13595,13596,19418,13597,16249,16250,18822,21269,21270,21271,16350,21272,21273,21274,21275,21276,21277,13598,21278,16251,21734,21735,13599,23009,13600,13601,13602,23010,13603,20441,16813,16814,18506,18507,18508,18543,18509,18510,18511,18512,18513,20442,20443,22783,22784,13604,13605,21736,21737,22476,20444,23029,22793,21279,13606,20445,20446,21280,21738,21739,16815,16816,16817,16818,16819,21281,21282,21283,21284,16820,20447,13607,20726,21757,21740,21741,23011,23012,23013,13608,16252,21742,21743,21285,13609,16821,16253,16254,13610,22517,20448,21286,20449,20450,22785,13611,13761,20451,22477,22478,22479,22480,22481,22786,22787,20452,23014,23015,23016,23017,23018,23019,23020,15445,16255,17790,18514,18515,18516,18517,18518,18519,18520,18521,21287,13612,13613,23325,21288,21289,17389,17463,17390,17391,17478,22482,21290,21317,17471,16256,17392,17393,17394,17395,17396,17397,21744,13614,13789,13615,13616,13617,13618,21745,13619,21291,16257,18823,22788,16258,16259,13620,21292,17791,13621,21293,17826,17792,13622,16260,23021,13623,16955,23326,23327,14323,16261,17398,13783,21746,21747,21748,21749,23022,21294,17399,22806,22789,21295,19419,18824,18825,18826,18827,18828,18829,18830,17400,21296,21297,19420,13624,22483,22484,22485,22486,13777,13625,18616,17401,17402,17403,13626,13627,13628,22790,22796,18831,22791,20453,20454,20455,13629,13630,13631,19689,17404,23023,15446,16262,16263,16264,13632,21298,22487,13633,20456,16265,15447,20457,20458,20459,20460,22792,19421,15448,20461,21299,21300,15449,23024,21301,13634,15450,15451,23328,21342,16822,15452,20462,20463,20464,20465,20466,17405,20467,16266,16267,16268,16304,16269,20468,21302,20469,23025,21750,23026,22243,16823,16824,23329,23027,21751,18832,13635,16825,16826,16827,13636,20470,20471,20472,16270,13637,13638,13639,16271,21303,13640,23028,22502,22488,16828,16829,16830,13641,13495,13496,21218,21219,13497,16195,16755,16756,16757,21220,16346,18802,21221,21222,22972,21223,13498,16196,23309,22761,21697,21698,21699,22973,16758,22642,16197,22974,13499,22426,22975,22643,22644,13500,15405,16759,18023,18024,22762,22763,16198,23876,16199,18803,18804,16760,18040,19733,17374,16761,22976,16200,16351,16201,22427,22428,16762,13501,21224,18032,16202,22291,22429,22430,20414,20415,20416,13502,13503,18805,15406,18806,17784,17785,16203,14319,20417,19399,16763,22764,23449,13504,16764,16337,22431,22977,21753,22765,16765,16949,22978,18025,13505,19682,16204,23399,21338,22979,16766,22980,22981,22432,21225,18026,15407,15408,16205,13506,23400,18483,22982,23310,21700,15409,13758,13507,18807,18808,21701,21702,16767,16768,16769,21703,14320,22433,22645,15410,23412,16312,16206,13508,21704,21705,21706,21707,21708,18027,13509,23311,13510,19445,21226,22434,13511,13512,16207,22435,13513,23312,13514,22983,22984,16770,16771,13515,16832,21227,21709,16208,22646,16772,21228,16773,16774,16956,19683,22436,15411,23413,22985,19400,21229,22647,13516,23313,15412,22437,20418,20419,19401,22438,22439,23043,16898,22440,16209,13517,22766,22767,19450,13518,16210,16775,22441,13519,21710,21711,21712,21713,21230,16776,21231,15413,19402,13520,19458,19403,18484,18809,18810,22240,18485,18486,18487,18488,18489,13521,13522,22986,17475,15414,15415,15416,13523,18490,18491,21232,16211,21313,13524,22987,22988,22989,13525,16777,23314,13368,13788,13369,13930,21233,13526,13527,13528,13529,22768,19404,18028,16778,16779,16780,16781,13530,13531,16782,18029,18492,21326,18918,18919,18920,18921,18922,18923,16212,16302,13532,13533,18493,18494,20420,13534,23315,22442,22443,22507,22508,22444,18495,22445,22990,16213,22991,13535,13536,20727,21234,20421,20422,20423,21235,18811,16214,16215,16216,15417,13537,13538,18496,18497,18498,16217,13539,20424,21236,15418,21237,13540,16218,15788,21714,13541,13542,16219,15419,22241,22992,21715,15420,22993,18499,18500,15421,15422,15423,20425,20426,20427,20428,20429,22994,16783,16784,16785,19405,22995,23316,18812,18813,13543,16220,15424,15425,15426,15427,15428,15429,15430,15431,15432,16786,16221,22769,19406,16787,16788,21238,13544,16880,16789,16790,16426,16791,16792,16793,23450,21716,21717,21718,19407,18030,18031,13545,23451,23448,23572,23573,17786,13546,19732,19408,16338,21239,21240,16222,13547,13548,22996,18814,18815,21719,22446,22997,22447,13549,16223,19446,13550,19684,16274,22448,23317,23318,19409,20430,22449,13551,13552,13553,22450,16224,15433,13554,13555,22998,16225,15434,13556,16794,13557,22451,22452,22453,22454,23319,16795,16796,16891,16797,13558,21720,13559,22455,13560,23320,22999,20431,16226,16227,22456,22457,15435,15436,21241,21242,19410,22458,16798,21721,16799,16431,16864,16228,13561,20432,20433,20375,22459,22460,22509,21243,18501,18502,18503,23321,18933,23322,19685,19686,13562,18504,18505,19089,19090,19125,19091,19092,19093,19094,19111,19095,19096,19112,19097,13563,22461,21722,21723,21724,21725,21726,21727,21728,21729,22501,13485,23560,23561,23562,23563,23574,23564,23565,23557,23566,23575,23567,23568,23569,23570,23571,19394,19395,16182,16183,16184,16739,16740,16741,16742,16743,16744,16273,16185,16186,16745,16746,21214,22966,18575,18477,18478,18479,18480,18481,18482,18264,21215,19797,19677,19678,19679 |

总之,很长  ^ V ^,完美解决;

发布了32 篇原创文章 · 获赞 8 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/jeffiny/article/details/84874423
今日推荐