美文网首页
【MySQL】select -> Json

【MySQL】select -> Json

作者: 宅家学算法 | 来源:发表于2022-07-11 09:39 被阅读0次

日常工作需求,有h5_apps和h5_company两张表

create table h5_apps(
    uuid text,
    company_id text,
    name text
);

create table h5_company(
    uuid text,
    name text
);

希望通过select语句直接输出以下格式

    {
        "companyName": "A",
        "companyUuid": "B",
        "apps": [
          {
            "name": "C",
            "uuid": "D",
            "company_id": "B"
          },
          {
            "name": "CC",
            "uuid": "DD",
            "company_id": "B"
          }
        ]
      },
    {
        "companyName": "a",
        "companyUuid": "b",
        "apps": [
          "name": "c",
          "uuid": "d",
          "company_id": "b"
        ]
      }

解题

(1)函数JSON_OBJECT():将一个键值对列表转换成json对象
(2)GROUP_CONCAT(xxx):是将分组中括号里对应的字符串进行连接.如果分组中括号里的参数xxx有多行,那么就会将这多行的字符串连接,每个字符串之间会有特定的符号进行分隔。

select json_object('companyName', companyName, 'companyUuid', companyUuid, 'apps', apps)
from(
SELECT distinct company.name as companyName,
       company.uuid as companyUuid,
       group_concat(json_object('uuid', app.uuid, 'name', app.name, 'company_id', app.company_id)) apps
FROM h5_apps app
    INNER JOIN h5_company company
        ON app.company_id = company.uuid
group by company.name, company.uuid)t;

相关文章

网友评论

      本文标题:【MySQL】select -> Json

      本文链接:https://www.haomeiwen.com/subject/vpzgbrtx.html