首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mariaDB中的聚合函数

mariaDB中的聚合函数
EN

Stack Overflow用户
提问于 2018-06-08 05:24:52
回答 4查看 4.2K关注 0票数 4

我对mariadb是个新手,我是用MySQL开发的,在切换到mariadb后它不工作了,我发现的错误部分位于' JSON_ARRAYAGG ',在以前我使用JSON_ARRAYAGG将结果组合成如下所示的数组

代码语言:javascript
复制
SELECT column1, JSON_ARRAYAGG(column2) AS column2 FROM table GROUP BY column1;

转型

代码语言:javascript
复制
column1    column2               column1    column2
1            a                      1       ['a','b']
1            b                      2       ['cc','dd']
2            cc          --->       3       ['e']
2            dd
3            e

有没有办法在mariadb中做到这一点?提前谢谢你!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-08 14:24:39

在MariaDB v10.3.3中创建aggregate function

代码语言:javascript
复制
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 ;

并像这样使用它:

代码语言:javascript
复制
SELECT column1, JSON_ARRAYAGG(column2) AS column2 FROM table GROUP BY column1;

都会起作用的。

票数 15
EN

Stack Overflow用户

发布于 2018-06-08 12:55:33

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

代码语言:javascript
复制
SELECT column1, CONCAT('[', GROUP_CONCAT(column2), ']') AS column2 FROM table GROUP BY column1;
票数 4
EN

Stack Overflow用户

发布于 2018-06-08 05:31:29

你可以使用GROUP_CONCAT,我想这会让你得到你想要的东西。

代码语言:javascript
复制
SELECT column1, GROUP_CONCAT(column2) AS column2 FROM table GROUP BY column1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50750379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档