美文网首页
【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