Mysql mariaDB中的聚合函数

Mysql mariaDB中的聚合函数,mysql,mariadb,Mysql,Mariadb,我是mariadb的新手,我使用MySQL开发了一些东西,在切换到mariadb后,它不起作用,我发现错误部分位于“JSON_ArrayAg”,在以前,我使用JSON_ArrayAg将结果按组组合为数组,如下所示 SELECT column1, JSON_ARRAYAGG(column2) AS column2 FROM table GROUP BY column1; 转化 column1 column2 column1 column2 1

我是mariadb的新手,我使用MySQL开发了一些东西,在切换到mariadb后,它不起作用,我发现错误部分位于“JSON_ArrayAg”,在以前,我使用JSON_ArrayAg将结果按组组合为数组,如下所示

SELECT column1, JSON_ARRAYAGG(column2) AS column2 FROM table GROUP BY column1;
转化

column1    column2               column1    column2
1            a                      1       ['a','b']
1            b                      2       ['cc','dd']
2            cc          --->       3       ['e']
2            dd
3            e
在马里亚布有这样做的方法吗?
提前谢谢你

你可以使用GROUP_CONCAT,我想这会帮你找到你想要的东西

SELECT column1, GROUP_CONCAT(column2) AS column2 FROM table GROUP BY column1

您可以通过使用括号包装来模拟它

在MariaDB v10.3.3中创建一个

DELIMITER //

DROP FUNCTION IF EXISTS JSON_ARRAYAGG//

CREATE AGGREGATE FUNCTION IF NOT EXISTS JSON_ARRAYAGG(next_value TEXT) RETURNS TEXT
BEGIN  

 DECLARE json TEXT DEFAULT '[""]';
 DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN json_remove(json, '$[0]');
      LOOP  
          FETCH GROUP NEXT ROW;
          SET json = json_array_append(json, '$', next_value);
      END LOOP;  

END //
DELIMITER ;
然后像这样使用它:

SELECT column1, JSON_ARRAYAGG(column2) AS column2 FROM table GROUP BY column1;

将起作用。

我相信你可以使用MariaDB
JSON_ARRAY
函数并编写你自己的聚合函数,该函数依赖于此,然后使用:-)注意-JSON是在MySQL和MariaDB之间独立开发的;你会发现很多不同之处。信息:在这里你可以找到MySQL和MariaDB之间功能差异的概述:
SELECT column1, JSON_ARRAYAGG(column2) AS column2 FROM table GROUP BY column1;