如果添加了另一列,group_concat将返回null

时间:2014-11-10 08:39:24

标签: mysql bigdata

我有以下代码

SELECT
  GROUP_CONCAT(
    CONCAT('{"id"', id, ','),
    CONCAT('"COL1"', col1, ','),
    CONCAT('"col2"', col2, ','),
    CONCAT('"col3"', col3, ','),
    CONCAT('"col4"', col4, '}')
    SEPERATOR '\n')
  AS json from tableX

整个group_concat返回null。如果我删除了一个concat(随机)它就可以了。

该表包含大约1500万行。 我已经设置了

SET SESSION group_concat_max_len = 188446744073709551615;

为什么它返回null的任何想法?

1 个答案:

答案 0 :(得分:4)

尝试此操作,处理任何空值并查​​看输出是否确实超过了长度阈值:

  select json, length(json) from (
  SELECT
  GROUP_CONCAT(
    CONCAT('{"id"', coalesce(id, '""'), ','),
    CONCAT('"COL1"', coalesce(col1, '""'), ','),
    CONCAT('"col2"', coalesce(col2, '""'), ','),
    CONCAT('"col3"', coalesce(col3, '""'), ','),
    CONCAT('"col4"', coalesce(col4, '""'), '}')
    SEPARATOR '\n')
  AS json from tableX
  ) x
  -- limit 200000

如果group_concat函数允许NULL值覆盖其他所有内容(我不确定),那么你可以满足它。

更新SEPERATOR是一个错字 - 它应该是SEPARATOR