最近在数据数据处理中用到了GROUP_CONCAT()函数 ,这里简单记录分项一下
query_sql = "SELECT a, b, c, d, e, f, g, h, i "\
"FROM table AS p "\
"LEFT JOIN ( "\
"SELECT j, GROUP_CONCAT(k) AS Item, GROUP_CONCAT(l) AS Check_Type "\
"FROM table "\
"GROUP BY j) AS i ON p.j = i.j "\
"WHERE o = %s"
首先这里记录一下GROUP_CONCAT()函数的使用:
语法
: group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )
select id, GROUP_CONCAT(DISTINT price order by price desc) from goods group by id
以id分组,把price字段的值去重打印在一行,逗号分隔,按照price倒序排列
遇到了mysql 错误 [Err] 1260 - Row * was cut by GROUP_CONCAT()
问题:
是因为GROUP_CONCAT有个最大长度的限制,超过最大长度就会被截断掉,
所以如果合并的字段比较多的情况下就会遇到这个问题,
解决问题的办法就是修改它的最大长度限制:
# 在数据查询:SELECT @@global.group_concat_max_len;
# 修改方式一:在mysql 配置文件中group_concat_max_len = 102400 #你要的最大长度
# 修改方式二:SET GLOBAL group_concat_max_len=102400;
# //会话级
# SET SESSION group_concat_max_len = 102400;