有没有等效的方法可以在MariaDB中执行MySQL的JSONOBJECTAGG()?

时间:2018-11-10 07:24:35

标签: mysql json database mariadb

我正在为数据项目使用的服务器崩溃了,现在我正在重新创建数据库。我曾经在MySQL数据库上工作,现在我正在使用MariaDB。我以前从未使用过MariaDB。

以前,我使用以下命令将某些数据从另一个表插入到一个表中:

CREATE TABLE collaborators_list 
SELECT awards.id, awards.researcher_name, awards.organization_id, 
    JSON_OBJECTAGG(awards.fiscal_year, coapplicants.coapplicant_name, 
    coapplicants.organization_number) 
AS 'coapplicants_list' FROM awards 
INNER JOIN coapplicants 
ON awards.id=coapplicants.id 
GROUP BY awards.researcher_name, awards.organization_id;

基本上,我想在MariaDB中做同样的事情。我尝试在这里看: https://mariadb.com/kb/en/library/json-functions/ 但是除非我读错了东西,否则这些都不是我真正想要的...

帮助!

1 个答案:

答案 0 :(得分:3)

,MariaDB仍然不支持JSON_ARRAYAGGJSON_OBJECTAGG函数。已提出要求此功能的JIRA票证:https://jira.mariadb.org/browse/MDEV-16620

现在,来自JSON_OBJECTAGG()的文档:

  

两个列名称或表达式作为参数,   其中第一个用作键,第二个用作值。

     

如果任何键名为NULL或参数个数为,则会发生错误   不等于2。

但是,您要在JSON_OBJECTAGG(awards.fiscal_year, coapplicants.coapplicant_name, coapplicants.organization_number)中指定三个参数; 因此您尝试的查询将无法正常运行

现在,在缺少必需功能的情况下,我们可以将Group_Concat()Concat()结合使用。我假设您只需要前两个参数(如上一节所述)。

GROUP_CONCAT( DISTINCT CONCAT('"', awards.fiscal_year, '": "',
                              coapplicants.coapplicant_name, '"') 
              SEPARATOR ', ')