首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JSON_ARRAYAGG时如何在JSON_OBJECT中返回不同的值

使用JSON_ARRAYAGG时如何在JSON_OBJECT中返回不同的值
EN

Stack Overflow用户
提问于 2022-02-04 22:29:36
回答 1查看 1.2K关注 0票数 2

如何与JSON_ARRAYAGG一起使用DISTINCT?

让我们以下面的查询为例。

代码语言:javascript
复制
SELECT 
    staff.company,
    JSON_ARRAYAGG(
        JSON_OBJECT(
            'uuid', UuidFromBin(staff.uuid),
            'username', staff.username,
            'name', staff.name,
            'surname', staff.surname
        )
    )
FROM events_staff
JOIN staff ON staff.id = staff_id
LEFT JOIN skills s ON s.id = events_staff.skill_id
GROUP BY staff.company

现在,我如何在这个查询中使用不同的JSON_ARRAYAGG,以便JSON对象是不同的?如果我们可以基于任何键(如uuid )应用不同的内容,情况会更好。

搜索半个小时后,我找到了以下选项,但无法在上面的查询中应用这些选项。

- JSON_ARRAYAGG返回一个JSON数组,该数组由所选行中字符串-expr的所有不同(唯一)值组成:JSON_ARRAYAGG(DISTINCT col1)。空字符串-expr不包含在JSON数组中。JSON_ARRAYAGG(由( col2 ) col1区分)返回一个JSON数组,该数组仅包含记录中的col1字段值,其中col2值是不同的(唯一的)。但是请注意,不同的col2值可能包含一个NULL作为一个不同的值.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-24 12:16:23

我已经找到了解决这个问题的解决办法,首先解决的是使用JSON_ARRAYAGG(DISTINCT JSON_OBJECT())根本行不通的问题。

因此,解决办法是CONCAT('[', GROUP_CONCAT(DISTINCT JSON_OBJECT("key": value)), ']');,这将产生类似于这个[ {"key": <value1>},{"key":<value2>}, ...]的东西。这将返回不同的结果。

注意:您可能需要将其转换为JSON,最后可以这样做:=> CAST(CONCAT('[', GROUP_CONCAT(JSON_OBJECT("key": value)), ']') AS JSON);

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70993552

复制
相关文章

相似问题

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