mariadb中的mysql聚合函数

pokxtpni  于 2021-06-23  发布在  Mysql
关注(0)|答案(3)|浏览(407)

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

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

在马里亚布有没有办法?提前谢谢!

1mrurvl1

1mrurvl11#

你可以用小组会议,我想这会让你得到你想要的。

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

z9smfwbn2#

在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;

会有用的。

gwo2fgha

gwo2fgha3#

可以通过 Package GROUP_CONCAT 带括号使用 CONCAT .

SELECT column1, CONCAT('[', GROUP_CONCAT(column2), ']') AS column2 FROM table GROUP BY column1;

相关问题